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

Php 如何在一个Prestashop模块上的一个文件中自动加载?,php,composer-php,prestashop,autoload,Php,Composer Php,Prestashop,Autoload,我正在尝试使用一组带有Composer的库来实现Prestashop模块 我目前的方法是在每个文件中包含vendor/autoload.php文件(mymodule.php,controllers/front/foo.php,controllers/admin/bar.php,等等) 仅在mymodule.php上执行require不是一个解决方案,我看不到任何钩子来执行该任务 有没有比在每个PHP文件上复制粘贴相同的代码片段更好的方法?谢谢大家! 也许可以使用htaccess/rewrite将

我正在尝试使用一组带有Composer的库来实现Prestashop模块

我目前的方法是在每个文件中包含
vendor/autoload.php
文件(
mymodule.php
controllers/front/foo.php
controllers/admin/bar.php
,等等)

仅在
mymodule.php
上执行require不是一个解决方案,我看不到任何钩子来执行该任务


有没有比在每个PHP文件上复制粘贴相同的代码片段更好的方法?谢谢大家!

也许可以使用htaccess/rewrite将所有脚本重新路由到一个脚本,然后在包含pretashop文件之前,使用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!
  }

这主意不错,但据我所知,例如,Prestashop只需要一个控制器。没有基于symfony的htaccess involvedIt,也许您可以在symfony基类上使用自动加载?问题是,如果不更改代码,您将无法更新它。请等待较新版本的Prestashop。我不确定您使用的是哪个版本的Prestashop,但dispatcher中有一个actionDispatcher钩子,您可以使用它在控制器执行前进行自定义加载。现在的工作是在一个钩子中包含全局上下文中的自动加载…啊!快好了!!!。在
$controller=controller::getController($controller\u class)之前,我需要一个钩子我做到了!看到我接受的答案了吗