Наследование

Наследование — присвоние классу все методы и свойства другого класса.

Наследовать класс можно через оператор extends.

class ClassParent 
{
    public function getPHPVersion()
    {
        return PHP_VERSION;
    }
}


class ClassChild extends ClassParent {}


$myobj = new ClassChild();
echo $myobj->getPHPVersion(); // 7.2.11

На примере выше видно, что объект ClassChild был создан пустым (без свойств и методов), но при этом он может использовать свойства и методы объекта ClassParent. Это и есть механизм «наследования».

Наследовать можно только один класс.

Классы не могут наследовать свойства и методы, созданные через модификатор private.

Расширить наследуемый метод

Если надо расширить наследуемый метод, то чтобы не писать заново код в дочернем классе, можно воспользоваться ключевым словом parent.

class ClassParent 
{
    public $version;
    
    public function getPHPVersion()
    {
        $this->version = PHP_VERSION;
        return $this->version; // 7.2.11
    }
}

class ClassChild extends ClassParent
{
    public function getPHPVersion()
    {
        // выполняется код наследуемого метода
        parent::getPHPVersion();
        
        return 'Версия PHP '.$this->version; // Версия PHP 7.2.11
    }
}


$myobj = new ClassChild();
echo $myobj->getPHPVersion(); // Версия PHP 7.2.11

Если бы ключевое слово parent не использовался, то метод вернул бы просто «Версия PHP».

Запретить наследовать класс

Чтобы запретить наследовать класс, его надо объявить модификатором final.

final class myObj {}