Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在codeigniter中使用composer包?_Php_Namespaces_Codeigniter 2_Composer Php - Fatal编程技术网

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'
    我认为这是因为您的文件夹结构