Doctrine 原则1.2:覆盖原则\u记录::\u从模板获取()

Doctrine 原则1.2:覆盖原则\u记录::\u从模板获取(),doctrine,behavior,getter-setter,doctrine-1.2,Doctrine,Behavior,Getter Setter,Doctrine 1.2,我有一个模型类(显然,它扩展了Doctrine_Record),它“充当”自定义模板 我想得到这样的值:“echo$record->virtual\u field”。是否有方法重写自定义模板中的getter方法以提供自定义响应,然后将请求传递给父类 换句话说,是否有方法覆盖相关模板中的条令记录::\u get()。我想你不是在谈论实际的行为“actAs”模板 如果定义新的_get()方法,它将自动覆盖父级的_get()方法 现在,在新的_get()方法中,首先检查当前实例中是否存在该方法,然后检

我有一个模型类(显然,它扩展了Doctrine_Record),它“充当”自定义模板

我想得到这样的值:“echo$record->virtual\u field”。是否有方法重写自定义模板中的getter方法以提供自定义响应,然后将请求传递给父类


换句话说,是否有方法覆盖相关模板中的条令记录::\u get()。我想你不是在谈论实际的行为“actAs”模板

如果定义新的_get()方法,它将自动覆盖父级的_get()方法

现在,在新的_get()方法中,首先检查当前实例中是否存在该方法,然后检查父实例中是否存在该方法

我把它拼凑在一起(记住,现在快午夜了):


好的。我想你不是在谈论实际的行为“actAs”模板

如果定义新的_get()方法,它将自动覆盖父级的_get()方法

现在,在新的_get()方法中,首先检查当前实例中是否存在该方法,然后检查父实例中是否存在该方法

我把它拼凑在一起(记住,现在快午夜了):

类产品扩展原则\u记录{
//...
公共函数获取($name){
如果($name=='virtual_field'){
返回$this->virtual_field();
}                                                     
否则{
返回父项::uu get($name);
}
}
公共函数虚拟_字段(){
//计算或检索虚拟字段值
返回$value;
}
}
类别产品扩展原则\u记录{
//...
公共函数获取($name){
如果($name=='virtual_field'){
返回$this->virtual_field();
}                                                     
否则{
返回父项::uu get($name);
}
}
公共函数虚拟_字段(){
//计算或检索虚拟字段值
返回$value;
}
}

+1回答这个好问题。但是你说的“清除字段”到底是什么意思呢?好吧,我想更好的说法应该是“如果我找到一个vitrual_字段调用,不要调用父对象u_get()”+1来回答这个好问题。但是“清除字段”到底是什么意思呢?好吧,我想更好的说法是“如果我找到一个vitrual_字段调用,不要调用父对象u_get()”,我说的是条令行为,而不是模型类本身。我想通过将功能放入模板类(这是行为的一部分),一次向多个模型添加一个虚拟字段(如示例中的“virtual_field”)。好的。我想现在我明白你想做什么了。您想覆盖条令模板中的条令记录::uu get(),对吗?现在,这是一个棘手的问题;)那么请忽略我的ANWR,对不起。我说的是条令行为,而不是模型类本身。我想通过将功能放入模板类(这是行为的一部分),一次向多个模型添加一个虚拟字段(如示例中的“virtual_field”)。好的。我想现在我明白你想做什么了。您想覆盖条令模板中的条令记录::uu get(),对吗?现在,这是一个棘手的问题;)那就不管我的回答吧,对不起。你想说什么?我建议你把问题和接受的答案再读一遍。这正是你在前面的评论中所说的:“好吧,我想更好的说法是‘如果我找到一个vitrual_现场调用,不要调用家长_get()’”对吧。然后我说“我说的是条令行为,而不是模型类本身。我想通过将功能放入模板类(这是行为的一部分),一次向多个模型添加一个虚拟字段(如您的示例中的“virtual_field”)。”你在这里想说什么?我建议你把问题和接受的答案再读一遍。这正是你在前面的评论中所说的:“好吧,我想更好的说法是‘如果我找到一个vitrual_现场调用,不要调用家长_get()’”对吧。然后我说:“我说的是条令行为,而不是模型类本身。我想通过将功能放入模板类(这是行为的一部分),一次向多个模型添加一个虚拟字段(如示例中的“virtual_field”)