Я пишу пакет композитора, который хочу использовать в нескольких проектах CodeIgniter. Ответы на этот вопрос могут объяснить, как изменить пакет и приложение.
Пакет
Я создал пакет для композитора под названием 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 {
// ...
}
Проект CodeIgniter
Мой проект 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
Полагаю, проблема связана с пространствами имен.
Есть подсказка?