gpt4 book ai didi

model - Phalcon: Controller 和模型中2个函数 "initialize"和 "onConstruct"的顺序

转载 作者:行者123 更新时间:2023-12-01 20:21:54 24 4
gpt4 key购买 nike

我检查了一下,Controller上的执行顺序是“onConstruct”然后“initialize”,而Model上的执行顺序是“initialize”然后“onConstruct”。

那么为什么这些方法在Controller和Model上的执行顺序不同呢?有什么想法吗?

最佳答案

除了相同的名称之外,initialize 在模型和 Controller 中具有不同的用途:

对于模型,初始化将主要负责初始化模型的元数据(列映射、模型关系等),这就是为什么它在构造函数之前调用,因为所有模型元数据都是静态存储在模型类中(顺便说一句,这就是为什么每个模型每个请求仅调用一次 initialize 的原因)。

对于 Controller ,如果路由匹配成功(所需操作存在并且已正确请求)当前用户,则仅调用initialize有权根据 ACL 执行该操作(如果有的话)。因此,首先构建 Controller 来检查这些事情(onConstruct 被触发),然后如果一切顺利,您就可以真正初始化 Controller (initialize 被触发)。

<小时/>

现在谈论模型和 Controller 中的onConstruct,它只是 native 构造函数的替代品。在类中实现 __construct 方法 isn't recommended因为它们将被需要特定方法签名的框架调用。此外,您还需要记住始终手动 Hook 父构造函数。因此,通过使用 onConstruct 事件,我们可以避免所有这些问题。

关于model - Phalcon: Controller 和模型中2个函数 "initialize"和 "onConstruct"的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23660613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com