编写器故障排除:不使用CodeIgniter 3自动加载的类

时间:2016-09-22 17:20:39

标签: php codeigniter composer-php autoload

问题

我正在尝试使用PayPal Checkout REST SDK,它需要PayPal库通过composer自动加载。我已经完成了在CodeIgniter 3中启用Composer的步骤,但是当我转到我的自动加载PayPal\Rest\ApiContext类的控制器时,我收到以下错误:

  

致命错误:未找到类'PayPal \ Rest \ ApiContext'   C:\ XAMPP \ htdocs中\ PHP \巨嘴通话\ APP \模块\贝宝\控制器\ Paypal.php   在第15行

到目前为止我有什么

这是我的composer.json文件

{
    "require": {
        "paypal/rest-api-sdk-php" : "*"
    }
}

我在config.php文件中设置了$config['composer_autoload'] = TRUE;

这是我的控制器

<?php

use PayPal\Rest\ApiContext;

class Paypal extends MX_Controller
{
    public function __construct()
    {
        $api = new ApiContext(

        );
        var_dump($api);
    }

}

问题

如何对composer及其自动加载器进行故障排除,以便确定自动加载进程失败的位置。

4 个答案:

答案 0 :(得分:10)

这里的解决方案是:在config.php而不是设置...

$config['composer_autoload'] = TRUE; 

你需要把

$config['composer_autoload'] = FCPATH . 'vendor/autoload.php'; 
然而,我仍然不确定为什么这与原始文件建议相反。有点头疼。

答案 1 :(得分:2)

我知道这是一个相当古老的问题但是,我仍然想把我的输入基本上CodeIgniter 3特别是3.1.6有问题,当你做

 $config['composer_autload'] = TRUE:

然后它不会工作,并且不会自动加载来自供应商文件夹的文件,现在有两种可能的解决方案,已经提到了#34; Jethro Hazelhurst&#34;。

另一个简单的解决方案是在应用程序文件夹中复制composer.json,然后从应用程序文件夹运行composer install,或者将vendor文件夹与composer.json和composer.lock一起移动到应用程序文件夹,然后此TRUE值将起作用正常。

感谢。

答案 2 :(得分:0)

您可以在命令提示符下使用composer dump-autoload。这将重新生成要包含在项目中的文件列表。

答案 3 :(得分:0)

对于可能有此问题的其他任何人。 Codeigniter 3 在应用程序中有第三方文件夹,用于放置供应商目录(供应商目录包含库)。

<块引用>

composer.json (/composer.json)

告诉 composer 使用第三方文件夹中的 vendor 目录来存储库

"config": {
    "vendor-dir": "application/third_party/vendor"
},
<块引用>

config.php (/application/config/config.php)

告诉 Codeigniter 3 自动加载来自第三方/供应商文件夹的所有库

$config['composer_autoload'] = APPPATH . 'third_party/vendor/autoload.php';

PS:在每个请求上自动加载所有库可能会导致网站速度变慢,如果有很多依赖项和中等至高流量的网站。如果是这种情况,请根据需要加载库。