我正在编写一个想在多个CodeIgniter项目中使用的composer程序包。该问题的答案可以解释如何同时修改程序包和应用程序。
我创建了一个名为steevedroz/codeigniter-twig
的作曲家程序包。其composer.json
如下所示:
{
"name": "steevedroz/codeigniter-twig",
"type": "library",
"description": "A simple CodeIgniter library that allows using Twig along with the usual CI helpers",
"keywords": ["codeigniter", "twig"],
"homepage": "https://gitlab.com/SteeveDroz/codeigniter-twig",
"license": "MIT",
"authors": [{
"name": "SteeveDroz",
"role": "Developer"
}],
"require": {
"php": ">=7.0",
"twig/twig": "^2.5"
},
"autoload": {
"psr-4": {
"CodeigniterTwig\\": "/"
}
}
}
它包含一个我想从CodeIgniter加载的主类,位于包的根目录。它称为Twig.php
,包含:
<?php
namespace CodeigniterTwig;
class Twig {
// ...
}
我的POC项目是一个基本的CodeIgniter项目,其根目录为composer.json
,application/
等之后的system/
文件,
{
"require": {
"steevedroz/codeigniter-twig": "dev-master"
}
}
我运行的composer install
正确地加载了我的包裹。
在application/config.php
中,我设置:
$config['composer_autoload'] = '/vendor/autoload.php';
我是我的一个控制器,我想将我的Twig
类加载为这样的库:
$this->load->library('CodeigniterTwig/twig');
但是当我检查结果时,我得到了错误:
Unable to load the requested class: Twig
我尝试使用不同的名称空间(见下文),但结果始终相同!
steevedroz/CodeigniterTwig/twig
CodeigniterTwig/twig
twig
steevedroz/codeigniter-twig/twig
我想这个问题与名称空间有关。
有任何线索吗?