使用Zend Framework 2,如果满足某些路由条件,是否有内置的方法来加载某些模块?
这是一个非常糟糕的例子。想象一下,登录和注册页面是作为单独的模块构建的,可以知道登录模块不需要实例化/ register是当前路由。
如果你能看过我可怕的例子,我认为逻辑是合理的......有些模块会提供一些听众和触发器,除非他们的路线在起作用,否则不会被使用。尝试在每分钟服务数千次的站点上尽可能避免引导开销。
以为在我推出一些方法之前我会问周围。
谢谢!
答案 0 :(得分:0)
虽然可以有条件地加载模块,但它不会基于路由,因为所有应用程序路由都存在于模块中。 ZF2如何知道哪些模块可能具有带有'模块加载的路径?附加条件没有先加载它们?
ZF2中的模块引导开销非常低。这是一个比ZF1大大改善的领域。这不太可能是您的应用程序的瓶颈,所以除非您知道它存在,否则不要尝试解决问题。
答案 1 :(得分:0)
希望现在为时已晚。我需要解决一个类似的问题,我只想在从cli工作时加载Cli模块。这就是我在application.config.php文件中所做的事情
return call_user_func(function() { $modules = array( 'Application', ); if (\Zend\Console\Console::isConsole()) { $modules[] = 'Cli'; } else { $modules[] = 'Api'; $modules[] = 'Mobile'; } return array( 'modules' => $modules, // Other application config options ); });
通常这个文件会有"返回数组(/ * ... * /);"但是通过将它变成一个函数,你可以应用你喜欢的任何逻辑。