Model Phalcon:2个函数的顺序;初始化";及;“OnConstruction”;在控制器和模型中

Model Phalcon:2个函数的顺序;初始化";及;“OnConstruction”;在控制器和模型中,model,controller,phalcon,Model,Controller,Phalcon,我检查了一下自己,发现控制器上的执行顺序是“onConstruct”然后是“initialize”,而模型上的执行顺序是“initialize”然后是“onConstruct” 那么,为什么这些方法在控制器和模型上的执行顺序不同呢?有什么想法吗?除了相同的名称之外,初始化在模型和控制器中有不同的用途: 对于模型initialize主要负责初始化模型的metada(列映射、模型关系等),这就是为什么在构造函数之前调用,因为所有模型元数据都静态存储在模型类中(顺便说一句,这就是为什么每个模型每个请求

我检查了一下自己,发现控制器上的执行顺序是“onConstruct”然后是“initialize”,而模型上的执行顺序是“initialize”然后是“onConstruct”


那么,为什么这些方法在控制器和模型上的执行顺序不同呢?有什么想法吗?

除了相同的名称之外,
初始化
在模型和控制器中有不同的用途:

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

对于控制器
初始化
仅在路由匹配成功的情况下调用(所需操作存在并且被正确请求)并且当前用户有权限根据路径执行该操作(如果有)。因此,首先构造控制器以检查这些事情(
onConstruct
被激发),然后如果一切顺利,您可以真正初始化控制器(
initialize
被激发)



现在,在模型和控制器中讨论
onConstruct
,这只是本机构造函数的替代品。在类中实现
\uu construct
方法,因为它们将由需要特定方法签名的框架调用。此外,您还需要记住始终钩住parent构造函数。因此,通过使用
onConstruct
事件,我们避免了所有这些问题。

我检查了自己,发现控制器上的执行顺序是“onConstruct”然后是“initialize”,而模型上的执行顺序是“initialize”然后是“onConstruct”.那么,为什么这些方法在控制器和模型上的执行顺序不同呢?你知道吗?