Как использовать пакеты композиторов в кодеригенере?

Я следил за этой статьей: 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.

  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 {...}