Zend Framework 2

4
我非常热爱新的Zend框架。我过去做过一个项目,现在决定学习包含一些我难以理解的重要部分的新版本。
我观看了网络研讨会和YouTube视频,也阅读了文档,试图通过阅读代码来理解这个框架,但有些东西我就是想不明白。
网络研讨会中提供了很多关于EventManager的信息,但由于我的英语不够好,我仅能理解讲话的100%。
我知道事件管理器管理事件,这很显然,但我不知道如何使用它:在其中一次网络研讨会上,他们提供了一些简单的示例,但他们没有解释应该把这段代码放在哪里,是放在module.php文件中还是其他地方。如果您可以向我展示一些带有详细说明的实际示例,那么我就可以了解到其意义所在。
接下来是传递给Module.php中大多数函数作为参数的神秘变量$ e,之后它被用于以下方式:$e-> getApplication或者其他我想知道这个$ e代表什么?它是什么的实例?接下来,它如何“自动”传递给这些函数?
另一个问题:在为每个模块指定的配置文件中(称为module.config.php),有很多东西。我明白了路由的意思,但是我想不明白invokables和factories是什么。在其中一个网络研讨会中,解释如下:invokables是指向类的路径,factories是可调用函数或类(记不清了)。这一点是可以理解的,但请提供一些深入的解释性实例,告诉我invokables和factories来自哪里以及其他需要了解的内容。
另外一件事是,在这些配置文件中有很多配置可能性。我在这些文件中可以找到哪些“键”和“值”的信息?
现在就这些,但还有一些未回答的问题,我想问问。如果有人能帮助我,我将非常感激通过邮件与此人通信。
好吧,一个问题已经解决了。关于神秘的&e,如果有人感兴趣,这里是解决方案:
这个$ e变量实例取决于我们在module.php文件中使用哪个函数:
情况1:init() -> &e是模块管理器的一个实例 情况2:onBootstrap() -> &e是MvcEvent的实例 (如果有其他情况我还没有发现,请让我们知道)
问题在于这些方法在事件被触发时被调用,因此神秘的&e是由侦听器传递给这些函数的,这些侦听器正在监听我们的代码中是否出现了这些函数(这是我的简单逻辑,所以请不要恨我)。

还有其他问题需要回答。一旦我找到有意义的答案,我会让你知道。

2个回答

3

在ZF2代码中,$e总是Zend\EventManager\EventManagerInterface的实例。通常情况下它要么是一个Zend\EventManager\Event,要么是一个Zend\Mvc\MvcEvent

类的EventManager触发事件,从而导致监听器回调被调用。每个监听器回调都会传递一个Event实例,然后就有一些有用的方法可用,特别是getTarget()getParams()。其他的EventManagerInterface实例通常有更专业的方法。MvcEvent特别是具有与Mvc组件相关的方法,例如getApplication()getRouter()getRequest()getResponse()


请问您能否解释一下何时使用Zend\EventManager\Event和Zend\Mvc\MvcEvent? - user1650441
1
你只能从由Zend\Mvc组件触发的事件中获取MvcEvent。 - Rob Allen

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接