在供应商文件夹codeigniter中找不到类

时间:2018-05-05 19:15:54

标签: php codeigniter composer-php

我正在尝试使用webchemistry中的发票生成器。我用composer require webchemistry/invoice:^1.0安装了它。

我将此文件夹移至我的APPPATH . 'third_party\vendor\';文件夹。所以在我的配置文件中,我有以下几行:

$config['composer_autoload'] = APPPATH . 'third_party\vendor\autoload.php';

我的index.php文件(在root中)包含以下代码:

include_once BASEPATH.'../application/third_party/vendor/autoload.php';

在我的控制器中,我尝试执行以下操作:

public function createInvoice()
{
    $company = new \WebChemistry\Invoice\Data\Company();
}

这会导致以下错误:

  

消息:Class' WebChemistry \ Invoice \ Data \ Company'找不到

在我的IDE(PhpStorm)中,我按住Ctrl键并单击公司,它可以正确解析并指向正确的文件。 为什么PHP无法将其解析为正确的文件位置?

2 个答案:

答案 0 :(得分:1)

在开始时在控制器中添加文件include和以下代码

$config['composer_autoload'] = false; // no need change this, make it default

<?php
require_once(APPPATH . '/third_party/vendor/autoload.php');
use \WebChemistry\Invoice\Data\Company as Company;

class Invoice extends CI_Controller {

    public function createInvoice(){
        $company = new Company();
    }

}

答案 1 :(得分:1)

除非您知道自己在做什么,否则不应对vendor目录执行任何操作。如果要更改Composer安装依赖项的目录,可以通过在composer.json config中设置vendor-dir来完成此操作:

{
    ...
    "config":{
        "vendor-dir": "third_party/vendor"
    }
}