Php 如何在codeigniter中使用composer包?
我关注了这篇文章: 但是我得到了Php 如何在codeigniter中使用composer包?,php,namespaces,codeigniter-2,composer-php,Php,Namespaces,Codeigniter 2,Composer Php,我关注了这篇文章: 但是我得到了致命错误:找不到类“Buzz\Browser” 他的帖子少了什么 我的控制器或应用程序没有名称空间。我希望能够在一个无名称空间的框架中,在一个控制器的操作中使用该软件包。您可以直接在控制器中添加Composer Autoloder: // Composer Autoloader require FCPATH.'vendor/autoload.php'; 归功于@jmadsen 这可以通过正确的加载顺序来实现: /* * --------------------
致命错误:找不到类“Buzz\Browser”
他的帖子少了什么
我的控制器或应用程序没有名称空间。我希望能够在一个无名称空间的框架中,在一个控制器的操作中使用该软件包。您可以直接在控制器中添加Composer Autoloder:
// Composer Autoloader
require FCPATH.'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 */
编辑:该死,我刚才说的和@Tjorriemorrie差不多
如果正确地遵循了所有其他方向,则只需在index.php文件末尾附近添加以下代码:
/*
* --------------------------------------------------------------------
* COMPOSER AUTOLOAD
* --------------------------------------------------------------------
*/
include_once './vendor/autoload.php';
…只需确保在调用CodeIgniter引导文件之前将其插入:
/*
* --------------------------------------------------------------------
* LOAD THE BOOTSTRAP FILE
* --------------------------------------------------------------------
*
* And away we go...
*
*/
require_once BASEPATH.'core/CodeIgniter.php';
对于CodeIgniter 3.x和composer,只需将
$config['composer\u autoload']
设置为TRUE
或application/config/config.php中的自定义路径即可
CI似乎假定供应商
目录位于应用程序
目录中。那不是我的案子。我做了以下工作:
$root = getcwd();
$config['composer_autoload'] = "$root/vendor/autoload.php";
$config['composer_autoload']='vendor/autoload.php'代码>在Codeigniter3.x中,您可以通过进入应用程序/config/config.php并查找这一行来轻松实现这一点
$config['composer_autoload'] = FALSE;
请确保将其设置为TRUE,并在设置之后立即要求\u执行以下操作:
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\u 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是codeigniter为根文件夹定义的常量
我想这很有帮助。我正在使用,它将供应商目录从根目录中删除。由于根没有预定义的常量(据我所知),因此我使用了以下方法:
$root = getcwd();
$config['composer_autoload'] = "$root/vendor/autoload.php";
有两种方法可以自动加载使用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 {...}
你是否在使用自动加载器?我确实在index.php中包含了它;问题是未使用FQN找到该类。你知道怎么做吗?在index.php中它对我也不起作用。这就是为什么我把它直接放在控制器里。您可以尝试扩展CI_控制器,并在构造函数?FrontController路径中添加Composer Autoloader。基本上是index.php文件;如果我没有弄错的话,它位于根目录中。所以我必须把它放在我的index.php??我将composer.json和vendor目录添加到应用程序文件夹中。因此,您需要使用:require-APPPATH。”供应商/autoload.php'代码>不需要require\u once
行。它由system/core/CodeIgniter.php
Ok处理,我在用户决定重新定位供应商文件夹时添加了这一点。谢谢你的评论。我不得不使用APPPATH/vendor/autoload.php'
我认为这是因为您的文件夹结构