J'ai suivi cet article: http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniter
Mais je reçois Fatal error: Class 'Buzz\Browser' not found
.
Que manque-t-il à son poste?
Mon contrôleur ou mon application ne sont pas namespaced. J'espérais pouvoir utiliser ce package dans l'action d'un contrôleur dans un framework non-namespaced.
Merci à @jmadsen
Ceci est possible en obtenant juste l'ordre de chargement correct:
/*
* --------------------------------------------------------------------
* 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 */
Pour CodeIgniter 3.x et le compositeur, il est suggéré de définir simplement $config['composer_autoload']
sur TRUE
ou un chemin personnalisé dans application/config/config.php
.
Il semble que CI suppose que le répertoire vendor
se trouve dans le répertoire application
. Ce n'était pas mon cas. J'ai fait ce qui suit:
$config['composer_autoload'] = 'vendor/autoload.php';
EDIT: Zut, je viens de dire à peu près exactement la même chose que @Tjorriemorrie
Si vous avez suivi toutes les autres instructions correctement, il vous suffit d’ajouter le code suivant près de la fin votre fichier index.php:
/*
* --------------------------------------------------------------------
* COMPOSER AUTOLOAD
* --------------------------------------------------------------------
*/
include_once './vendor/autoload.php';
... assurez-vous simplement de le placer dans avant le fichier CodeIgniter Bootstrap s'appelle:
/*
* --------------------------------------------------------------------
* LOAD THE BOOTSTRAP FILE
* --------------------------------------------------------------------
*
* And away we go...
*
*/
require_once BASEPATH.'core/CodeIgniter.php';
Vous pouvez ajouter directement le Composer Autoloder dans votre contrôleur:
// Composer Autoloader
require FCPATH.'vendor/autoload.php';
Bien dans Codeigniter3.x, vous pouvez facilement le faire en allant dans application/config/config.php et en recherchant cette ligne.
$config['composer_autoload'] = FALSE;
Assurez-vous de le définir sur VRAI et juste après, vous avez besoin de ce qui suit:
require_once APPPATH.'vendor/autoload.php';
Donc, vous obtenez quelque chose comme ça:
/*
|--------------------------------------------------------------------------
| 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';
Assurez-vous simplement que votre dossier de fournisseur figure dans le dossier de l'application et que vous êtes prêt à partir.
J'ai récemment découvert que vous pouvez simplement définir $ config ['composer_autoload'] = TRUE; et mettez votre dossier de fournisseur dans le dossier de l'application et c'est tout.
J'utilise Kenjis codeigniter composer package , et il supprime le répertoire du fournisseur de la racine. Puisqu'il n'y a pas de constante prédéfinie (que je sache) pour la racine, j'ai utilisé ce qui suit:
$root = getcwd();
$config['composer_autoload'] = "$root/vendor/autoload.php";
Il existe deux manières de charger automatiquement le fichier de classe requis à l'aide de composer.
Ajoutez la ligne ci-dessous dans index.php dans le répertoire racine.
require FCPATH . 'vendor/autoload.php';
Ou charger automatiquement directement dans le contrôleur où vous souhaitez utiliser.
defined('BASEPATH') OR exit('No direct script access allowed');
require FCPATH . 'vendor/autoload.php';
class Home extends CI_Controller {...}