在面向对象的PHP中,在覆盖方法内调用被覆盖的方法

4
在 symfony 模型中工作时,我想重写一个函数并从覆盖的函数中调用被覆盖的函数,大致如下:
class MyClass extends BaseMyClass {

  function setMyProperty($p) {
    parent::setMyProperty($p);
    //do some other stuff
  }

}

这导致了分段错误。我不想改变父类--它是由Symfony生成的,并且如果模型被重建,可能会被覆盖。这似乎是一个应该很简单的问题,但我却找不到解决方案。


2
这不应该发生。请提供有关错误消息的更多数据,并检查日志文件以获取任何其他信息。 - Gordon
你使用的是哪个PHP版本? - pinaki
请注意,这与Symfony无关 - 这是Doctrine。 - Crozin
2个回答

0

既然你已经看到了这个问题,我猜你应该将其标记为已回答,以便将其从未回答的列表中移除。


哦,抱歉,我本来打算将它添加为注释的。这是新用户错误。 - Hanseh
直到发布解决方案的两天后我才能将其标记为已解决。在周末我忘记了 - 感谢提醒。 - paddymcc
不用谢。我被这个问题吸引住了,没有注意到你已经有了解决方案,所以我发了一个提醒。 :D - Hanseh

-2

我已经在symfony项目论坛上找到了解决方案。

我无法调用被覆盖的函数,因为它并不存在。尽管它存在足够让我重写它。

使用

$this->_set('my_property', $p);

适用于哪里

parent::setMyProperty($p);

导致错误。

请注意

$this->setMyProperty($p);

如果方法没有被覆盖,在我的类中可以正常工作。


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