扩展具有特殊过载的类

时间:2014-03-17 17:49:01

标签: php operator-overloading

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

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>';
    }
}

我知道这似乎是添加这么简单功能的一种非常复杂的方式。这是我的代码的一个淡化版本,提供了一个简单的例子来解释我的问题。我需要能够使用相同的名称来重载函数,但是将一组开始和结束代码添加到扩展类中。反正有没有完成这个?我不知道从哪里开始。

3 个答案:

答案 0 :(得分:1)

使用parent::display()。请参阅the php manual

例如:

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

    public function display()
    {
        $return = '<div class="panel">';
        $return .= parent::display();
        return $return.'</div>';
    }
}

答案 1 :(得分:0)

要调用父函数,您可以使用parent::display()

答案 2 :(得分:0)

您可以轻松地重新定义一个函数并调用父格式。

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();