Множественное наследование в php

134
16 февраля 2018, 19:52

Возможно ли наследование свойств и методов от нескольких классов в php? если да, то пример пожалуйста

Answer 1

Возможно ли наследование свойств и методов от нескольких классов в php?

В чистом виде - нет, но начиная с версии 5.4.0, PHP реализует метод для повторного использования кода под названием трейт (trait).

Цитата:

Трейт - это механизм обеспечения повторного использования кода в языках с поддержкой только одиночного наследования, таких как PHP. Трейт предназначен для уменьшения некоторых ограничений одиночного наследования, позволяя разработчику повторно использовать наборы методов свободно, в нескольких независимых классах и реализованных с использованием разных архитектур построения классов. Семантика комбинации трейтов и классов определена таким образом, чтобы снизить уровень сложности, а также избежать типичных проблем, связанных с множественным наследованием и смешиванием (mixins).

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

Пример:

<?php
trait ezcReflectionReturnInfo {
    function getReturnType() { /*1*/ }
    function getReturnDescription() { /*2*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
    use ezcReflectionReturnInfo;
    /* ... */
}
class ezcReflectionFunction extends ReflectionFunction {
    use ezcReflectionReturnInfo;
    /* ... */
}

* Подробнее можно почитать в официальной документации по ссылке выше.

Answer 2

Если вам это понадобилось в PHP, значит пора внедрять интерфейсы. Свойства вы так не унаследуете, но опять таки если вам это понадобилось, пора от них избавляться в пользу методов.

READ ALSO
Вставить wp_editor с плагином

Вставить wp_editor с плагином

У меня есть кастомная страница настроек в админке WordPressНа ней я вставляю редактор текста с помощью wp_editor($text, 'content', ['textarea_name' => 'content'])

163
Где ошибка в скриптах, помогите?

Где ошибка в скриптах, помогите?

Documentation API: http://docscarbonsoft

144
Realtime уведомление

Realtime уведомление

Доброго времени суток, ребят подскажите как можно реализовать такую функцию:

121
Как избавиться от .php в запросе? [дубликат]

Как избавиться от .php в запросе? [дубликат]

На данный вопрос уже ответили:

114