作曲家故障排除:类 不使用 CodeIgniter 3 自动加载

Troubleshooting composer: classes not autoloading with CodeIgniter 3

问题

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

Fatal error: Class 'PayPal\Rest\ApiContext' not found in C:\xampp\htdocs\php\toucan-talk\App\modules\paypal\controllers\Paypal.php on line 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 及其自动加载器进行故障排除,以便我可以查明自动加载过程失败的位置。

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

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

$config['composer_autoload'] = TRUE; 

你需要把

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

但是我仍然不确定为什么这与原始文档建议相反。真的有点头疼。

我知道这是一个很老的问题,但我仍然想提出我的意见,基本上 CodeIgniter 3 特别是 3.1.6 有问题,当你这样做时

 $config['composer_autload'] = TRUE:

那么它将无法工作并且不会自动加载供应商文件夹中的文件现在 "Jethro Hazelhurst" 已经提到了这个解决方案有 2 种可能的解决方案。

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

谢谢。

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

composer.json (/composer.json)

告诉 composer 使用 third_party 文件夹内的 vendor 目录来存储库

"config": {
    "vendor-dir": "application/third_party/vendor"
},

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

告诉 Codeigniter 3 自动加载 third_party/vendor 文件夹中的所有库

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

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