Оглавление

Сохранение функциональности исходного метода при переопределении методов

Если вы добавили новую функциональность в унаследованный метод, но хотите обратиться к исходному методу, используйте ключевое слово parent с оператором разрешения области видимости (::):

<?php  
class MyClass 
{ 
    public $prop1 = "Это свойство класса!"; 
 
    public function __construct() 
    { 
        echo 'Класс "', __CLASS__, '" инициирован!<br />'; 
    } 
 
    public function __destruct() 
    { 
        echo 'Класс "', __CLASS__, '" уничтожен.<br />'; 
    } 
 
    public function __toString() 
    { 
        echo "Используем метод toString: "; 
        return $this->getProperty(); 
    } 
 
    public function setProperty($newval) 
    { 
        $this->prop1 = $newval; 
    } 
 
    public function getProperty() 
    { 
        return $this->prop1 . "<br />"; 
    } 
} 
 
class MyOtherClass extends MyClass 
{ 
    public function __construct()                                          
    {                                                                      
        parent::__construct(); // Вызвать конструктор родительского класса 
        echo "Новый конструктор в классе " . __CLASS__ . ".<br />";        
    }                                                                      
 
    public function newMethod() 
    { 
        echo "Новый конструктор в классе " . __CLASS__ . ".<br />"; 
    } 
} 
 
// Создать новый объект
$newobj = new MyOtherClass; 
 
// Вывести объект в виде строки
echo $newobj->newMethod(); 
 
// Использовать метод родительского класса 
echo $newobj->getProperty();  
?> 


Этот сценарий выводит результаты работы как родительского конструктора, таи и конструктора нового класса.

 

Класс "MyClass" инициирован!
Новый конструктор в классе MyOtherClass.
Новый конструктор в классе MyOtherClass.
Это свойство класса!
Класс "MyClass" уничтожен.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити