我有模特

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)的一部分,那么您将失去使事情保持灵活性的可能性。缺乏灵活性确实是一个糟糕的情况。

10-06 05:25