作曲家故障排除:类 不使用 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:在每次请求时自动加载所有库可能会导致网站变慢 如果有很多依赖项和中等到高流量的网站。如果是这种情况,请根据需要加载库。
问题
我正在尝试使用 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:在每次请求时自动加载所有库可能会导致网站变慢 如果有很多依赖项和中等到高流量的网站。如果是这种情况,请根据需要加载库。