Я пытаюсь использовать набор библиотек с Composer для модуля Prestashop.
Мой текущий подход заключается в том, чтобы включить файл vendor/autoload.php
mymodule.php
каждый файл ( mymodule.php
, controllers/front/foo.php
, controllers/admin/bar.php
и т. Д.).
Выполнение mymodule.php
только поверх mymodule.php
не является решением, я не вижу никакого крючка для выполнения задачи.
Есть ли лучший подход, чем копировать и вставлять один и тот же фрагмент поверх каждого файла PHP? Спасибо!
Возможно, переадресуйте все сценарии на один с помощью htaccess / rewrite, а затем в этом случае перед включением файлов preashop используйте autoload.
Я нашел способ сделать это!
Крючок actionDispatcher работал для меня с моделями, крючками, но не с контроллерами.
Похоже, что есть не документированный крюк, называемый moduleRoutes, который загружается перед любым контроллером.
Таким образом, я смог автоматически загружать все классы моего модуля:
<?php if (!defined('_PS_VERSION_')) exit; //_PS_MODULE_DIR_ require_once __DIR__.'/vendor/autoload.php'; // Autoload here for the module definition class MyCustomModule extends Devnix\Prestablocks\Module { // My custom Prestashop framework (in experimental phase, https://github.com/devnix/prestablocks) // ... public function install() { return parent::install() && $this->registerHook('moduleRoutes'); // Register the hook } public function hookModuleRoutes() { require_once __DIR__.'/vendor/autoload.php'; // And the autoload here to make our Composer classes available everywhere! }