我关注了这篇文章:http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniter如何在codeigniter中使用composer包?
但我得到Fatal error: Class 'Buzz\Browser' not found
。
什么是从他的岗位缺少什么?
我的控制器或应用程序没有命名空间。我希望能够在非命名空间框架中的一个控制器的操作中使用那个包。
我关注了这篇文章:http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniter如何在codeigniter中使用composer包?
但我得到Fatal error: Class 'Buzz\Browser' not found
。
什么是从他的岗位缺少什么?
我的控制器或应用程序没有命名空间。我希望能够在非命名空间框架中的一个控制器的操作中使用那个包。
感谢@jmadsen
这可能是由刚刚加载正确的顺序:
/*
* --------------------------------------------------------------------
* LOAD THE BOOTSTRAP FILE
* --------------------------------------------------------------------
*
* And away we go...
*
*/
// Composer Autoloader
require FCPATH . 'vendor/autoload.php';
require_once BASEPATH.'core/CodeIgniter.php';
/* End of file index.php */
什么是'FCPATH' – iGbanam
FrontController路径。基本上是index.php文件;如果我没有弄错,它位于根目录下。 – Tjorriemorrie
你可以在你的控制器直接添加作曲Autoloder:
// Composer Autoloader
require FCPATH.'vendor/autoload.php';
我确实将它包含在index.php中;问题是没有使用FQN找到类。你知道怎么做吗? – Tjorriemorrie
它没有在我的index.php工作。这就是为什么我把它直接放在控制器中。 您可以尝试扩展CI_Controller并在构造函数中添加Composer Autoloader? – Kinobi
编辑:该死的,我刚刚说过几乎与@Tjorriemorrie完全一样的东西
如果你已经正确执行了所有的其他方向,所有你需要做的是添加以下代码非常结束你的index.php文件近:
/*
* --------------------------------------------------------------------
* COMPOSER AUTOLOAD
* --------------------------------------------------------------------
*/
include_once './vendor/autoload.php';
...只是确保你角子它的笨引导文件名为:
/*
* --------------------------------------------------------------------
* LOAD THE BOOTSTRAP FILE
* --------------------------------------------------------------------
*
* And away we go...
*
*/
require_once BASEPATH.'core/CodeIgniter.php';
对于笨3.x和作曲家,这是suggested只设置$config['composer_autoload']
到TRUE
或application/config/config.php
中的自定义路径。
看来,CI假定vendor
目录是application
目录中。那不是我的情况。我做了以下内容:
$config['composer_autoload'] = 'vendor/autoload.php';
井Codeigniter3.x您可以轻松地做到这一点通过进入的application/config/config.php文件,并寻找这一行
$config['composer_autoload'] = FALSE;
确保你它设置为TRUE,之后它,你require_once这样的:
require_once APPPATH.'vendor/autoload.php';
所以你得到的东西是这样的:
/*
|--------------------------------------------------------------------------
| Composer auto-loading
|--------------------------------------------------------------------------
|
| Enabling this setting will tell CodeIgniter to look for a Composer
| package auto-loader script in application/vendor/autoload.php.
|
| $config['composer_autoload'] = TRUE;
|
| Or if you have your vendor/ directory located somewhere else, you
| can opt to set a specific path as well:
|
| $config['composer_autoload'] = '/path/to/vendor/autoload.php';
|
| Note: This will NOT disable or override the CodeIgniter-specific
| autoloading (application/config/autoload.php)
*/
$config['composer_autoload'] = TRUE;
require_once APPPATH.'vendor/autoload.php';
只要确保你有你的供应商文件夹中的应用程序文件夹,你是好去。
最近我发现,你可以设置$配置[ 'composer_autoload'] = TRUE;并将您的供应商文件夹放在应用程序文件夹中,就是这样。
我使用Kenjis codeigniter composer package,并且它把供应商目录关闭根的。由于没有预先定义的常数(我知道),我使用了以下内容:
$root = getcwd();
$config['composer_autoload'] = "$root/vendor/autoload.php";
您是否在使用自动加载器? –
是的,在index.php中。 – Tjorriemorrie