如何在codeigniter中使用composer包?

时间:2012-12-06 10:44:37

标签: php namespaces codeigniter-2 composer-php

我已经关注了这篇文章:http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniter

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

他的帖子缺少什么?

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

7 个答案:

答案 0 :(得分:33)

归功于@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 */

答案 1 :(得分:25)

对于CodeIgniter 3.x和作曲家,它suggested只需将$config['composer_autoload']设置为TRUEapplication/config/config.php中的自定义路径。

CI似乎假定vendor目录位于application目录中。那不是我的情况。我做了以下事情:

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

答案 2 :(得分:7)

编辑:该死的,我刚刚和@Tjorriemorrie说的几乎完全相同

如果您已正确遵循所有其他说明,您只需在index.php文件的最后附近添加以下代码

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

...只需确保在之前将其插入调用CodeIgniter引导程序文件:

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

答案 3 :(得分:5)

在Codeigniter3.x中,您可以通过进入application / config / config.php并查找此行来轻松完成此操作

$config['composer_autoload'] = FALSE;

确保将其设置为TRUE,然后立即将其设置为:

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';

只需确保您的应用程序文件夹中包含您的供应商文件夹即可。

我最近发现你可以设置$ config ['composer_autoload'] = TRUE;并将您的供应商文件夹放在应用程序文件夹中,就是这样。

答案 4 :(得分:4)

您可以直接在控制器中添加Composer Autoloader:

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

答案 5 :(得分:1)

我使用Kenjis codeigniter composer package,它将供应商目录放在根目录之外。由于根没有预定义的常量(我知道),我使用了以下内容:

void

答案 6 :(得分:1)

使用composer可以通过两种方式自动加载类文件。

  1. 在根目录的index.php中添加以下行。

    require FCPATH . 'vendor/autoload.php';
    
  2. 或直接在您要使用的控制器中自动加载。

    defined('BASEPATH') OR exit('No direct script access allowed');
    
    require FCPATH . 'vendor/autoload.php';
    
    class Home extends CI_Controller {...}