Я пытаюсь реализовать собственное расширение TYPO3 для выполнения некоторого php-кода. С моим основным классом "Привет, мир!" Это уже работает, и я понимаю использование пространств имен.
Но теперь я нашел php-библиотеку, которая соответствует моим потребностям. Я вставил папку lib в папку «Classes» моего расширения. Но теперь я получаю ошибки: класс не найден, потому что ни один из классов lib не имеет пространства имен.
К сожалению, я не смог найти учебник / документ о том, как добавить библиотеку к расширению typo3 при динамическом добавлении пространства имен для каждого класса. Я пытался переопределить каждый класс с пространством имен, но каким-то образом это не может быть решением
вот пример моего основного класса, который работает, но как только я пытаюсь вызвать "ServiceMailman", я получаю ошибку пространства имен, ну, потому что у них его нет
namespace Htwg\GiMailman;
require_once 'Service/ServiceMailman.php';
class GiMailman{
public function getMailinglists() {
$mm = new ServiceMailman('http://localhost', '', '');
}
}
Я ищу способ добавить библиотеку php в папку "Classes" без добавления пространства имен для каждого класса библиотеки.
Обновление:
Я установил библиотеку по внешнему пути и добавил ее в composer.json в записи classmap:
"autoload": {
"psr-4": {
"Htwg\\GiMailman\\": "Classes/"
},
"classmap": ["/opt/lampp/lib/php/Services"]
}
и он отображается в autoload_classmap.php:
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
...
'Services_Mailman' => $baseDir . '/../../../../lib/php/Services/Mailman.php',
'Services_Mailman_Exception' => $baseDir . '/../../../../lib/php/Services/Mailman/Exception.php',
);
Но когда я пытаюсь классифицировать класс в своем классе php, он все равно не может быть найден:
namespace Htwg\GiMailman;
//require_once 'Services/Mailman.php';
class GiMailman{
public function getMailinglists() {
$mm = new \Service_Mailman('http://localhost:8001/3.1', '', 'password');
return "getMailinglists";
}
}