Как использовать пакеты композиторов в кодеригенере?
Я следил за этой статьей: http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniter
Но я получаю Fatal error: Class 'Buzz\Browser' not found
.
Что не хватает на его должности?
Мой контроллер или приложение не имеют пространства имен. Я надеялся, что просто смогу использовать этот пакет в одном действии контроллера в инфраструктуре без имен.
Ответы
Ответ 1
Кредит @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 */
Ответ 2
Для CodeIgniter 3.x и композитора, предложил, чтобы установить $config['composer_autoload']
в TRUE
или пользовательский путь в application/config/config.php
.
Кажется, что CI предполагает, что каталог vendor
находится в каталоге application
. Это было не мое дело. Я сделал следующее:
$config['composer_autoload'] = 'vendor/autoload.php';
Ответ 3
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';
Ответ 4
Что ж, в 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; и поместите папку вашего поставщика в папку приложения и что это.
Для тех, кто хотел бы, чтобы ваша папка продавца находилась вне папки приложения. Вы можете сделать это следующим образом: например, вы хотите поместить его в корневую папку.
СОВЕТ: это уже было описано в комментарии
$ config ['composer_autoload'] = '/path/to/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'] = '/path/to/vendor/autoload.php';
|
| Note: This will NOT disable or override the CodeIgniter-specific
| autoloading (application/config/autoload.php)
*/
$config['composer_autoload'] = FCPATH .'vendor/autoload.php';
Где FCPATH - постоянная, определяемая кодовым указателем для корневой папки.
Я думаю, это помогает.
Ответ 5
Вы можете добавить непосредственно автоподатчик композитора в свой контроллер:
// Composer Autoloader
require FCPATH.'vendor/autoload.php';
Ответ 6
Я использую пакет компилятора Kenjis codeigniter, и он помещает каталог поставщика в корневой каталог. Поскольку для корня нет предопределенной константы (которой я знаю), я использовал следующее:
$root = getcwd();
$config['composer_autoload'] = "$root/vendor/autoload.php";
Ответ 7
Существует два способа автозагрузки файла класса, который требуется с помощью composer.
-
Добавьте строку ниже в index.php в корневом каталоге.
require FCPATH . 'vendor/autoload.php';
-
Или автозагрузка прямо в контроллере, где вы хотите использовать.
defined('BASEPATH') OR exit('No direct script access allowed');
require FCPATH . 'vendor/autoload.php';
class Home extends CI_Controller {...}