Php 使用特殊重载扩展类

Php 使用特殊重载扩展类,php,operator-overloading,Php,Operator Overloading,我知道基本上如何扩展一个类并重载一个函数,同时仍然在重载函数中调用原始函数。在我进一步解释之前,让我先发布代码 class specList { public function __construct() { $this->list = array(); } public function add($item) { $this->list[] = $item; } public functi

我知道基本上如何扩展一个类并重载一个函数,同时仍然在重载函数中调用原始函数。在我进一步解释之前,让我先发布代码

class specList
{
    public function __construct()
    {
         $this->list = array();
    }

    public function add($item)
    {
        $this->list[] = $item;
    }

    public function display()
    {
         /*  
          *  for simplicity sake lets assume I have a function ul($list) that 
          *  builds a properly formatted <ul> with each item contained in a <li>.
          */
         return ul($this->list);
    }
}

class wrappedList extends specList
{
    public function __construct()
    {
        parent::__construct();
    }

    public function display()
    {
        $return = '<div class="panel">';
        $return .= //I need some way to call the parents display() function
        return $return.'</div>';
    }
}
类规范列表
{
公共函数构造()
{
$this->list=array();
}
公共功能添加($项)
{
$this->list[]=$item;
}
公共功能显示()
{
/*  
*为了简单起见,让我们假设我有一个函数ul($list)
*使用
  • 中包含的每个项目生成格式正确的
      。 */ 返回ul($this->list); } } 类wrappedList扩展了specList { 公共函数构造() { 父项::_构造(); } 公共功能显示() { $return=''; $return.=//我需要一些方法来调用parents display()函数 返回$return.'; } }
  • 我知道这似乎是添加如此简单功能的一种非常复杂的方式。这是我的代码的简化版本,提供了一个简单的示例来解释我的问题。我需要能够使用相同的名称来重载函数,但向扩展类添加一组开始和结束代码。有没有办法做到这一点?我不知道从哪里开始。

    使用
    parent::display()
    。看

    例如:

    class wrappedList extends specList
    {
        public function __construct()
        {
            parent::__construct();
        }
    
        public function display()
        {
            $return = '<div class="panel">';
            $return .= parent::display();
            return $return.'</div>';
        }
    }
    
    class wrappedList扩展了specList
    {
    公共函数构造()
    {
    父项::_构造();
    }
    公共功能显示()
    {
    $return='';
    $return.=parent::display();
    返回$return.';
    }
    }
    
    要调用父函数,可以使用
    parent::display()
    您可以轻松地重新定义函数并调用父格式

    class Food {
    
        public function eat()    {
            echo "eating food!";
        }
    }
    
    class Banana extends Food {
    
        public function eat() {
            parent::eat();
            echo "eating banana";
        }
    }
    
    $banana = new Banana();
    $banana->eat();
    

    啊。。我讨厌答案就在眼前。谢谢你的帮助。别忘了选择答案;-)。