代码之家  ›  专栏  ›  技术社区  ›  Dev_NIX

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

  •  1
  • Dev_NIX  · 技术社区  · 8 年前

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

    我目前的做法是将 vendor/autoload.php 每个文件上的文件( mymodule.php , controllers/front/foo.php , controllers/admin/bar.php 等)

    仅在 我的模块.php 不是一个解决方案,我看不出有什么办法可以完成这项任务。

    有没有比复制更好的方法;在每个PHP文件上粘贴相同的代码段?非常感谢。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dev_NIX    8 年前

    我已经找到了方法!

    这个 动作调度器 hook在模型、hook上为我工作,但在控制器上不工作。

    似乎有一个未记录的钩子称为 模块路由 哪些负载 之前 任何控制器。

    因此,我能够以这种方式自动加载所有模块的类:

    <?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!
      }