我有模特
BaseUser.class.php
User.class.php
UserTable.class.php
在用户类中
我已经覆盖了删除功能
class User extends BaseUser {
function delete(){
}
}
现在,如果我想调用父删除函数....怎么办?
示例
$user = new User();
$user->delete(); // will call the overridden delete
$user-> ?? ; // want to call parent delete
最佳答案
从技术上讲,出于充分的理由,这不可能从“外部”(公共(public)接口(interface))实现。
如果您了解原因(否则请阅读下文),并且实际上知道您的操作,则没有理由实际上不提供此功能:
class User extends BaseUser {
...
function parentDelete(){
parent::delete();
}
...
}
user = new User();
$user->delete(); // will call the overridden delete
$user->parentDelete(); // want to call parent delete
但是,如果您这样做了,您应该知道自己以某种方式滥用了继承。这肯定是一个特殊的情况,因为我无法想象任何情况下您实际上都需要这样做。
因此,请尝试阐明为什么需要此功能,以便为自己提供更好的建议。
出于一个非常简单的原因:在您的软件中,您不需要知道
$user
是否具有父级。那是您完全不需要关心的一些细节。这样一来,您以后就可以将用户软件中的所有用户对象替换为用户的子对象。这很重要,因为您想随着时间的推移更改软件。
如果将内部细节作为公共(public)接口(interface)的一部分,那么您将失去使事情保持灵活性的可能性。缺乏灵活性确实是一个糟糕的情况。