他的文章中缺少什么?
我的控制器或应用程序没有命名空间。我希望只能在非命名空间的框架中的一个控制器操作中使用这个包。
对于CodeIgniter 3.x和composer,建议只需在application/config/config.php
中设置$config['composer_autoload']
为TRUE
或自定义路径即可(建议)。
似乎CI假定vendor
目录位于application
目录内,但这不是我的情况。我进行了以下操作:
$config['composer_autoload'] = 'vendor/autoload.php';
感谢@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 */
require APPPATH . 'vendor/autoload.php';
- Lord_Dracon在Codeigniter3.x中,您可以轻松地通过进入application/config/config.php并查找此行来实现:
$config['composer_autoload'] = FALSE;
请确保将其设置为TRUE,然后紧接着使用require_once:
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';
< p >FCPATH是CodeIgniter定义的根文件夹常量。< /p >我想这会有所帮助。
require_once
行不是必需的。它由 system/core/CodeIgniter.php
处理。 - pbarneyAPPPATH . '../vendor/autoload.php'
。 - kurdtpage/*
* --------------------------------------------------------------------
* COMPOSER AUTOLOAD
* --------------------------------------------------------------------
*/
include_once './vendor/autoload.php';
请确保在调用CodeIgniter Bootstrap文件之前将其插入:
/*
* --------------------------------------------------------------------
* LOAD THE BOOTSTRAP FILE
* --------------------------------------------------------------------
*
* And away we go...
*
*/
require_once BASEPATH.'core/CodeIgniter.php';
// Composer Autoloader
require FCPATH.'vendor/autoload.php';
使用composer,有两种方法可以自动加载所需的类文件。
Add below line in index.php in the root directory.
require FCPATH . 'vendor/autoload.php';
Or autoload directly in the controller where you want to use.
defined('BASEPATH') OR exit('No direct script access allowed');
require FCPATH . 'vendor/autoload.php';
class Home extends CI_Controller {...}
我正在使用Kenjis codeigniter composer package,它将vendor目录放在根目录之外。由于没有预定义的常量(至少我不知道),我使用了以下代码:
$root = getcwd();
$config['composer_autoload'] = "$root/vendor/autoload.php";