如何从子函数的实例调用父函数?

2022-08-30 16:56:53

我有模型

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

答案 1

从技术上讲,这是不可能从“外部”(公共接口)实现的,这是有充分理由的。

如果您已经理解了原因(否则请阅读以下内容),并且您实际上知道自己在做什么,那么没有理由实际上不提供该功能:

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

这将允许您稍后将软件中的任何用户对象替换为用户的子对象。这很重要,因为您希望随着时间的推移更改软件。

如果你把内部细节作为公共界面的一部分,你就剥夺了自己保持灵活性的可能性。不灵活真的是一个糟糕的情况。


答案 2

也许试试这个

parent::delete();

推荐