在application.config.php中有条件地包含模块?

时间:2014-04-07 22:13:54

标签: php zend-framework2

使用Zend Framework 2,如果满足某些路由条件,是否有内置的方法来加载某些模块?

这是一个非常糟糕的例子。想象一下,登录和注册页面是作为单独的模块构建的,可以知道登录模块不需要实例化/ register是当前路由。

如果你能看过我可怕的例子,我认为逻辑是合理的......有些模块会提供一些听众和触发器,除非他们的路线在起作用,否则不会被使用。尝试在每分钟服务数千次的站点上尽可能避免引导开销。

以为在我推出一些方法之前我会问周围。

谢谢!

2 个答案:

答案 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
        );    
    });

通常这个文件会有"返回数组(/ * ... * /);"但是通过将它变成一个函数,你可以应用你喜欢的任何逻辑。