我正在尝试将一组库与Composer一起用于Prestashop模块。
我目前的做法是在每个文件vendor/autoload.php
,mymodule.php
,controllers/front/foo.php
等上加入controllers/admin/bar.php
文件。)
仅在mymodule.php
之上执行require不是解决方案,我没有看到任何钩子来完成任务。
有没有比复制和更好的方法?将相同的代码段粘贴到每个PHP文件的顶部?谢谢!
答案 0 :(得分:1)
我找到了办法!
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!
}
答案 1 :(得分:0)
也许使用htaccess / rewrite将所有脚本重新路由到一个脚本,然后在包含prestashop文件之前使用自动加载文件。