2012-12-06 29 views
10

我关注了这篇文章:http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniter如何在codeigniter中使用composer包?

但我得到Fatal error: Class 'Buzz\Browser' not found

什么是从他的岗位缺少什么?

我的控制器或应用程序没有命名空间。我希望能够在非命名空间框架中的一个控制器的操作中使用那个包。

+0

您是否在使用自动加载器? –

+0

是的,在index.php中。 – Tjorriemorrie

回答

32

感谢@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 */ 
+0

什么是'FCPATH' – iGbanam

+2

FrontController路径。基本上是index.php文件;如果我没有弄错,它位于根目录下。 – Tjorriemorrie

3

你可以在你的控制器直接添加作曲Autoloder:

// Composer Autoloader 
require FCPATH.'vendor/autoload.php'; 
+0

我确实将它包含在index.php中;问题是没有使用FQN找到类。你知道怎么做吗? – Tjorriemorrie

+0

它没有在我的index.php工作。这就是为什么我把它直接放在控制器中。 您可以尝试扩展CI_Controller并在构造函数中添加Composer Autoloader? – Kinobi

5

编辑:该死的,我刚刚说过几乎与@Tjorriemorrie完全一样的东西

如果你已经正确执行了所有的其他方向,所有你需要做的是添加以下代码非常结束你的index.php文件近:

/* 
* -------------------------------------------------------------------- 
* COMPOSER AUTOLOAD 
* -------------------------------------------------------------------- 
*/ 
include_once './vendor/autoload.php'; 

...只是确保你角子它的笨引导文件名为:

/* 
* -------------------------------------------------------------------- 
* LOAD THE BOOTSTRAP FILE 
* -------------------------------------------------------------------- 
* 
* And away we go... 
* 
*/ 
require_once BASEPATH.'core/CodeIgniter.php'; 
11

对于笨3.x和作曲家,这是suggested只设置$config['composer_autoload']TRUEapplication/config/config.php中的自定义路径。

看来,CI假定vendor目录是application目录中。那不是我的情况。我做了以下内容:

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

2

井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;并将您的供应商文件夹放在应用程序文件夹中,就是这样。

0

我使用Kenjis codeigniter composer package,并且它把供应商目录关闭根的。由于没有预先定义的常数(我知道),我使用了以下内容:

$root = getcwd(); 
$config['composer_autoload'] = "$root/vendor/autoload.php"; 
相关问题