thinkphp中调用zendframe work lib的方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-04-12 17:09:06 浏览: 评论:0
想在thinkphp框架中使用zendframe mail的功能,故把操作过程记录以下:
把zendframe Lib下的文件目录全部复制到thinkphp的org目录下,(ThinkPHP\Extend\Library\ORG\)这是thinkphp3.0的目录路径,其他版本可能有所不同。然后写个脚本把文件的后缀由.php改为.class.php
然后就可以调用了,但是如果一个一个的去引用文件会很不爽,所以thinkphp的Config.php文件中加入'APP_AUTOLOAD_PATH' =>'ORG',(自定义搜索路径)。不过这还没完,由于thinkphp的autoload方法里并不能映射zend的类名到相应的文件路径,不得已只好修改thinkphp的autoload方法(通过类名中的下划线来分割拼装路径)。同时还要修改import函数(因为import函数会自动将最后一段的字符串当作类名)
然后,就可以使用我要用的zend_mail类了,代码下面给出.
提示:以前就觉得tp的autoload实现的不好,首先不能扩展,另外不能搜索子目录.
- autoload//shi_mody
- $classPart = explode('_',$class);
- $class2 = implode('.',$classPart);
- //shi_mody end
- foreach ($paths as $path){
- //var_dump($path.'.'.$class2);
- if(import($path.'.'.$class2))//shi_mody:$class=>$class2
- // 如果加载类成功则返回
- return ;
- }
import函数:
- if(strpos($class,'ORG/Zend')==0){
- $classname = preg_replace('/\//','_',substr($class,4));
- }else{
- $classname = basename($class);
- }
- if (!class_exists($classname,false)) {
- // 如果类不存在 则导入类库文件
- return require_cache($classfile);
- }
改文件名脚本:
- $dir = "Validate/";
- traceDir($dir,"reClass");
- function reClass($file){
- if(strpos($file,"class.php")){
- $nFile = preg_replace('/\.php/',"class.php",$file);//文件名后缀记得满足条件
- rename($file,$nFile);
- }
- }
- function traceDir($dir,$callback){
- $h = opendir($dir);
- while(($file=readdir($h))){
- if($file=="." || $file=="..")
- continue;
- if(is_dir($dir.$file)){
- traceDir($dir.$file."/",$callback);
- }else{
- call_user_func_array($callback,array($dir.$file));
- }
- }
- }
调用zend_mail:
- class RssAction extends BaseAction{
- public function send(){
- $email = addslashes($_POST['email']);
- $title = addslashes($_POST['title']);
- $cont = $_POST['cont'];
- // import("ORG.Zend.Mail");//这里可以不用import了,另外tp框架里面默认的zend类库是放在ThinkPHP\Extend\里面的,如果使用tp默认的方法,则需要事先import,这时候如果类文件里面又引用了其他的类名,就需要实现import一大串的类
- $smtp = new Zend_Mail();
- $host="smtp.qq.com";
- $config = array(
- "port"=>25,
- "auth"=>"Login",
- "username"=>"werwer@qq.com",
- "password"=>"werwer23"
- );
- try{
- $smtpTrans = new Zend_Mail_Transport_Smtp($host,$config);
- $mail = new Zend_Mail();
- $mail->setDefaultTransport($smtpTrans);
- $mail->setBodyHtml($cont);
- $mail->setFrom($config["username"],"kindlerss.net")
- ->addTo($email, $email)
- ->setSubject($title);
- $mail->send();
- }catch(Exception $ex){
- echo $ex->message;
- }
- }
- }
Tags: thinkphp zendframe
相关文章
- ·ThinkPHP中自定义错误页面和提示页面 (2013-11-15)
- ·ThinkPHP中Ajax返回(2013-11-15)
- ·ThinkPHP中处理表单中注意(2013-11-15)
- ·ThinkPHP中I(),U(),$this->post()等函数(2013-11-15)
- ·ThinkPHP中公共函数路径和配置项路径的映射(2013-11-15)
- ·ThinkPHP中公共配置文件和各自项目中的配置文件组合(2013-11-15)
- ·ThinkPHP在控制器里的javascript代码不能执行解决方法(2013-11-29)
- ·ThinkPHP3.0略缩图不能保存到子目录(2013-12-03)
- ·thinkphp的循环结构(2014-01-10)
- ·thinkphp特殊标签使用(2014-01-10)
- ·thinkphp模板输出汇总(2014-01-10)
- ·thinkphp模板的赋值与替换(2014-01-10)
- ·thinkphp连贯操作(2014-01-10)
- ·thinkphp区间查询、统计查询、SQL直接查询(2014-01-10)
- ·thinkphp的普通查询与表达式查询(2014-01-10)
- ·RBAC类在ThinkPHP中的四种使用方法(2014-01-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)