持久化 · 第 7 题,共 12 题
从数据库加载模型对象后,Extbase 会调用哪个方法,以便例如在其中初始化 ObjectStorage 属性?
有 1 个正确答案。 简单
显示答案
答案
- A initializeObject()
解析
从数据库加载时,Extbase 不会调用构造函数:DataMapper 借助库 doctrine/instantiator 创建对象并直接设置值,然后调用 initializeObject()。因此建议:把 $this->speakers = new ObjectStorage(); 这类初始化放进 initializeObject(),并在构造函数中也调用这个方法——这样无论是 new Conference() 还是加载的对象,属性都已设置。只依赖构造函数是典型的陷阱。initializeAction() 属于控制器,在每个动作之前运行,而不是在加载模型时运行。