TP3.2 载入第三方类库的问题

在thinkphp开发中经常要用到第三方类库。我一般将第三方类库统一放到Application/Codebase/目录。因为很多的第三方类库都没有命名空间,我也不想一个个添加命名空间。如何载入Codebase目录下的类库文件了?
举个例子,我的tp项目目录结构
图片描述

我要载入CodebasephpMailer下的class.phpmailer.php文件(无命名空间),该怎么做了,最好是自动载入。
我看手册使用类库映射方式,我在commonconf 新建了一个alias.php,代码如下

return array(    
    'Codebase\phpMailer'        =>    APP_PATH.'/Codebase/phpMailer/class.phpmailer.php',    
    );

然后我在indexcontroller中$obj=new CodebasephpMailerPHPMailer();

报错:Class 'CodebasephpMailerPHPMailer' not found
该怎么处理了?还有一个问题,tp中类载入错误提示一般是这种错误显示,我怎么知道他到哪个文件里找的类,看不到具体的路径信息,很难排错的。

阅读 5.1k
5 个回答
在引入的文件中加个命名空间
namespace Codebase\Phpmailer;

使用的时候就
use Codebase\Phpmailer\Phpmailer;

请注意你的首字母大小写,以及不是class.phpmailer.php,而是Phpmailer.class.php

将第三方类库放到ThinkPHP\Library\Vendor目录下
使用vendor('phpMailer.class#phpmailer')引入,然后就可以实例化了

import("Codebase.phpMailer.class#phpmailer",'','.php')

按照你的目录结构
这句帮你解决问题

关键我不想把代码放到tp的源码中,也不想加命名空间。

$obj=\Codebase\phpMailer\ CodebasephpMailerPHPMailer();

推荐使用 composer

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题