Jak używać pakietów composer w codeigniter?

Śledziłem ten artykuł: http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniter

Ale rozumiem Fatal error: Class 'Buzz\Browser' not found.

Czego brakuje na jego stanowisku?

Mój kontroler lub aplikacja nie jest przestrzenią nazw. Miałem nadzieję, że po prostu będę mógł użyć tego jednego pakietu w akcji jednego kontrolera w frameworku bez przestrzeni nazw.

Author: j0k, 2012-12-06

7 answers

Kredyt dla @ jmadsen

Jest to możliwe poprzez poprawienie kolejności ładowania:

/*
 * --------------------------------------------------------------------
 * 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 */
 33
Author: Tjorriemorrie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-06 10:18:37

Dla CodeIgniter 3.x i composer, to zasugerował aby po prostu ustawić $config['composer_autoload'] Na TRUE lub ścieżkę niestandardową w application/config/config.php.

Wydaje się, że CI zakłada, że katalog vendor znajduje się w katalogu application. To nie była moja sprawa. Zrobiłem co następuje:

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

 15
Author: SeanWM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-15 16:23:42

EDIT: cholera, właśnie powiedziałem dokładnie to samo co @Tjorriemorrie

Jeśli poprawnie wykonałeś wszystkie inne kierunki, wystarczy dodać następujący kod na samym końcu twojego indeksu.plik php:

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

...upewnij się, że umieścisz go w przed plik Bootstrap CodeIgniter nazywa się:

/*
 * --------------------------------------------------------------------
 * LOAD THE BOOTSTRAP FILE
 * --------------------------------------------------------------------
 *
 * And away we go...
 *
 */
 require_once BASEPATH.'core/CodeIgniter.php';
 7
Author: TunaMaxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-20 06:55:27

Możesz dodać bezpośrednio Autoloder Composera w kontrolerze:

// Composer Autoloader
require FCPATH.'vendor/autoload.php';
 4
Author: Kinobi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-12 17:05:17

Dobrze w Codeigniter3.x możesz to łatwo zrobić, wchodząc do aplikacji / config / config.php i poszukaj tej linii

$config['composer_autoload'] = FALSE;

Upewnij się, że ustawiłeś ją na TRUE, a zaraz po niej wymagasz tego:

require_once APPPATH.'vendor/autoload.php';

Więc dostajesz coś takiego:

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

Upewnij się, że masz folder dostawcy w folderze aplikacji i jesteś gotowy do pracy.

Niedawno dowiedziałem się, że można po prostu ustawić $config ['composer_autoload'] = TRUE; i umieścić swój folder vendor w folder aplikacji i tyle.

 2
Author: Oteng Kwame,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-13 06:55:55

Używam Kenjis codeigniter composer package , i odkłada Katalog Dostawcy z katalogu głównego. Ponieważ nie ma predefiniowanej stałej (o której wiem) Dla roota, użyłem następującego:

$root = getcwd();
$config['composer_autoload'] = "$root/vendor/autoload.php";
 1
Author: Jahmic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-19 07:28:40

Są dwa sposoby automatycznego ładowania pliku klasy, który jest wymagany za pomocą composera.

  1. Dodaj poniższy wiersz w indeksie.php w katalogu głównym.

    require FCPATH . 'vendor/autoload.php';
    
  2. Lub automatyczne ładowanie bezpośrednio w kontrolerze, z którego chcesz korzystać.

    defined('BASEPATH') OR exit('No direct script access allowed');
    
    require FCPATH . 'vendor/autoload.php';
    
    class Home extends CI_Controller {...}
    
 0
Author: DurgVijay Kashyap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-06 09:08:54