Как стать автором
Обновить

PHP — «горизонтальное наследование»

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров1.7K
Итак, в новой версии PHP появилась интересный концепт — «horizontal inheritance» (горизонтальное наследование), который был добавлен в язык с помощью конструкции «namespace». Это позволяет объединять функциональность из нескольких классов без наследования их от одного класса-родителя. Вместо этого, теперь можно объединять методы и свойства из разных классов в одном классе через использование пространства имен.


Похожие концепции существуют и в других языках. Например, в языке программирования Scala используется концепция миксинов (mixins), которая позволяет объединять поведение из нескольких классов. В Ruby используется термин микросмешение (mixins) для описания похожей функциональности.

Как использовать механизм горизонтального наследования, введенного в версии PHP 5.3. Дадим такой пример, можно определить два класса с методами getHello() и getWorld(), а затем использовать пространства имен для объединения этих методов в новом классе:

namespace HelloWorld;

class Hello {
    public function getHello() {
        return "Hello ";
    }
}

namespace World;

class World {
    public function getWorld() {
        return "World!";
    }
}

namespace HelloWorld;

class HelloWorld {
    use \Hello, \World;

    public function getMessage() {
        return $this->getHello() . $this->getWorld();
    }
}

$helloWorld = new HelloWorld();
echo $helloWorld->getMessage(); // выводит "Hello World!"


В этом примере два класса Hello и World определены в разных пространствах имен, и каждый из них имеет свой метод, который возвращает соответствующую строку. Затем в пространстве имен HelloWorld используется ключевое слово use, чтобы импортировать методы из классов Hello и World и объединить их в новом классе HelloWorld. Наконец, в классе HelloWorld определен метод getMessage(), который использует импортированные методы, чтобы сформировать сообщение «Hello World!».

Нельзя исключать, что развитие этого концепта продолжиться и в следующих версиях языка. Уже сейчас на англоязычных форумах PHP поговаривают о таинственном механизме traits. Это слово можно по-разному перевести на русский язык. Но, скорее всего, войдет в наш язык как «трейт». Посмотрим…
Теги:
Хабы:
Всего голосов 39: ↑34 и ↓5+29
Комментарии62

Публикации

Истории

Работа

PHP программист
178 вакансий

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань