Классы огут наследовать методы и свойства другого класса с помощью ключевого слова extends
<?php
class MyClass {
public $property="Свойство родительского класса";
public function GetVal() {
return $this->property;
}
public function SetVal($param) {
return $this->property=$param;
}
public function __construct() {
echo "Класс ".__CLASS__." создан.<br/>";
}
public function __destruct() {
echo "Класс ".__CLASS__." удален.<br/>";
}
}
class MyClassExtends extends MyClass {
public function __toString() {
return __CLASS__.": Получаем перемменную из родительского класса: ".$this->property."<br/>";
}
}
$obj = new MyClassExtends;
echo $obj;
?>
В итоге получим на странице вывод
Класс MyClass создан. MyClassExtends: Получаем перемменную из родительского класса - Свойство родительского класса Класс MyClass удален.
Переопределение унаследованных свойств и методов
Повторное объявление в новом классе
<?php
class MyClass {
public $property="Свойство родительского класса";
public function GetVal() {
return $this->property;
}
public function SetVal($param) {
return $this->property=$param;
}
public function __construct() {
echo "Класс ".__CLASS__." создан.<br/>";
}
public function __destruct() {
echo "Класс ".__CLASS__." удален.<br/>";
}
}
class MyClassExtends extends MyClass {
public function __toString() {
return __CLASS__.": Получаем переменную из родительского класса: ".$this->property."<br/>";
}
public function GetVal($param) {
return $param.": ".$this->property."<br/>";
}
}
$obj = new MyClassExtends;
$param = "Добавлен новый метод";
echo $obj->GetVal($param);
?>
Сохранение функциональности исходного метода при переопределении
используется ключевое слово parent с оператором разрешения области видимости ::
<?php
class MyClass {
function Vychislenye($a,$b){
echo "Сумма чисел ".$a." и ".$b." равна ".$Summa=$a+$b."<br/>";
}
}
class MyClassExtends extends MyClass {
function Vychislenye($a,$b) {
parent::Vychislenye($a, $b);
echo "Произведение чисел ".$a." и ".$b." равно ".$Umnozhenye=$a*$b."<br/>";
}
}
$obj = new MyClassExtends;
echo $obj->Vychislenye(2, 4);
?>
Получим на странице
Сумма чисел 2 и 4 равна 6 Произведение чисел 2 и 4 равно 8