如何在Prestashop模块上的一个文件中要求自动加载?

时间:2016-06-21 08:38:51

标签: php composer-php prestashop autoload

我正在尝试将一组库与Composer一起用于Prestashop模块。

我目前的做法是在每个文件vendor/autoload.phpmymodule.phpcontrollers/front/foo.php等上加入controllers/admin/bar.php文件。)

仅在mymodule.php之上执行require不是解决方案,我没有看到任何钩子来完成任务。

有没有比复制和更好的方法?将相同的代码段粘贴到每个PHP文件的顶部?谢谢!

2 个答案:

答案 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文件之前使用自动加载文件。