Сегодня мы поговорим о наследовании классов в PHP:
Идеи для тем заканчиваются, пришлите, пожалуйста, темы для гайдов :\
_________________________________________________________________________
Если у вас возникли вопросы - пишите в теме. Надеюсь, отвечу :)
Если вы нашли у меня ошибку - пишите в ЛС, чтобы не засорять тему - поправлю.
Если вы хотите дополнить меня - пишите в теме, либо в ЛС - добавлю, оставлю credits.
Наследование классов — очень мощная возможность в объектно ориентированном программировании. Оно позволяет создавать производные классы (классы наследники), взяв за основу все методы и элементы базового класса (класса родителя).
Наследование - это создание копии класса для его расширения.
Расширить класс можно несколькими способами:
Поэтому давайте разберемся в этой теме поподробнее.
- Создав объект одного класса внутри другого
- Использовав наследование классов в PHP
$a->b->c()
не очень удобно.Поэтому давайте разберемся в этой теме поподробнее.
Чтобы наследовать класс в PHP, необходимо использовать ключевое слово
extends
после названия дочернего класса:
Код:
class ChildClass extends ParentClass {
// code
}
Код:
class ParentClass {
function parentFunction() { echo "Parent Function!"; }
function overrideFunction() { echo "Function to override in Child class"; }
}
class ChildClass extends ParentClass {
function childFunction() { echo "Child Function"; }
function overrideFunction() { echo "Function overrided!"; }
}
$object = new ChildClass;
$object->parentFunction(); // Выведет "Parent Function!", так как ChildClass наследует ParentClass
$object->childFunction(); // Выведет "Child Function!", так как такая функция имеется в классе ChildClass
$object->overrideFunction(); // Выведет "Function overrided!", так как эта функция была переопределена в дочернем классе ChildClass
Чтобы получить доступ к методам родительского класса, необходимо использовать
parent::
:
Код:
<?php
class A {
function main() { echo "Main Function"; }
}
class B extends A {
function start() { parent::main(); }
}
$object = new B;
$object->start();
// Выведет "Main Function", так как функция start() вызывает функцию main() родительского класса
_________________________________________________________________________
Если у вас возникли вопросы - пишите в теме. Надеюсь, отвечу :)
Если вы нашли у меня ошибку - пишите в ЛС, чтобы не засорять тему - поправлю.
Если вы хотите дополнить меня - пишите в теме, либо в ЛС - добавлю, оставлю credits.