Я следил за этой статьей: http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniter
Но я получаю 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 */
Для CodeIgniter 3.x и composer предлагается просто установить $config['composer_autoload']
в TRUE
или пользовательский путь в application/config/config.php
.
Кажется, что CI предполагает, что каталог vendor
находится в каталоге application
. Это было не мое дело. Я сделал следующее:
$config['composer_autoload'] = 'vendor/autoload.php';
EDIT: Черт, я просто сказал почти точно то же самое, что @Tjorriemorrie
Если вы правильно следовали всем другим направлениям, все, что вам нужно сделать, это добавить следующий код рядом с вашим файлом index.php:
/* * -------------------------------------------------------------------- * COMPOSER AUTOLOAD * -------------------------------------------------------------------- */ include_once './vendor/autoload.php';
… просто убедитесь, что вы вставили его перед тем, как вызывается файл Bootstrap CodeIgniter:
/* * -------------------------------------------------------------------- * LOAD THE BOOTSTRAP FILE * -------------------------------------------------------------------- * * And away we go... * */ require_once BASEPATH.'core/CodeIgniter.php';
Вы можете напрямую добавить автомодель Composer в свой контроллер:
// Composer Autoloader require FCPATH.'vendor/autoload.php';
Ну в 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; и поместите папку своего поставщика в папку приложения, и все.
Я использую компилятор Kenjis codeigniter , и он помещает каталог поставщика в корневой каталог. Поскольку для корня нет предопределенной константы (которой я знаю), я использовал следующее:
$root = getcwd(); $config['composer_autoload'] = "$root/vendor/autoload.php";