PHP с нуля. Урок #8.3. Наследование классов в PHP

Премиум
Премиум
Статус
Оффлайн
Регистрация
3 Дек 2017
Сообщения
234
Реакции
201
Сегодня мы поговорим о наследовании классов в PHP:

Наследование классов — очень мощная возможность в объектно ориентированном программировании. Оно позволяет создавать производные классы (классы наследники), взяв за основу все методы и элементы базового класса (класса родителя).
Наследование - это создание копии класса для его расширения.
Расширить класс можно несколькими способами:
  • Создав объект одного класса внутри другого
  • Использовав наследование классов в PHP
Первый вариант достаточно не удобен, в нем "подобъект" даже "не знает", что он не самостоятелен, а содержится в другом классе, и, согласитесь, использовать такой синтаксис $a->b->c() не очень удобно.
Поэтому давайте разберемся в этой теме поподробнее.
Чтобы наследовать класс в PHP, необходимо использовать ключевое слово extends после названия дочернего класса:
Код:
Expand Collapse Copy
class ChildClass extends ParentClass {
// code
}
Код:
Expand Collapse Copy
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:::
Код:
Expand Collapse Copy
<?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.
 
Идеи для тем заканчиваются, пришлите, пожалуйста, темы для гайдов :\
Развивать пользователей?
- не занимайся этим дальше пары уроков.

Просмотри активность твоих тем.

Можешь уже не продолжать делать подобные гайды, уж лучше больше примеров и практики.

Разбор всяких скриптов и т.д.
Попробуй написать собственный класс и заставить пользователей использовать его как шаблон.

Так получилось, что учить людей без их желания не получится. Как бы хорошо не были оформлены твои темы, им похуй. У них у самих нет интереса. Лишь доля людей чего-то реально желает. Но они явно не по этим темам учатся.

Развивать то по сути нечего. Развивать стоит лишь желание. Это самый важный фактор.

Я бы лично хотел чтобы ты разобрал на примере какой-нибудь скрипт рулетки или опенкейсов. Я не представляю даже как это работает, как это связано. Интересует только сама задумка, а реализация у всех разная. Никогда не работал с этим типом, поэтому очень бы хотел узнать что-то за это.

Думаю в этом будет куда больше интереса и практики, нежели в разбирательстве самого языка.

Спасибо что выслушал!
 
Развивать пользователей?
- не занимайся этим дальше пары уроков.

Просмотри активность твоих тем.

Можешь уже не продолжать делать подобные гайды, уж лучше больше примеров и практики.

Разбор всяких скриптов и т.д.
Попробуй написать собственный класс и заставить пользователей использовать его как шаблон.

Так получилось, что учить людей без их желания не получится. Как бы хорошо не были оформлены твои темы, им похуй. У них у самих нет интереса. Лишь доля людей чего-то реально желает. Но они явно не по этим темам учатся.

Развивать то по сути нечего. Развивать стоит лишь желание. Это самый важный фактор.

Я бы лично хотел чтобы ты разобрал на примере какой-нибудь скрипт рулетки или опенкейсов. Я не представляю даже как это работает, как это связано. Интересует только сама задумка, а реализация у всех разная. Никогда не работал с этим типом, поэтому очень бы хотел узнать что-то за это.

Думаю в этом будет куда больше интереса и практики, нежели в разбирательстве самого языка.

Спасибо что выслушал!
Я хочу закончить эту серию гайдов, и приступить к новому типу *уроков*.
Для завершения "начального курса по PHP" есть какие-нибудь еще темы, или уже все? В голову ничего не приходит.
 
Назад
Сверху Снизу