Рубрики
Uncategorized

Как использовать эту особенность в PHP

Автор оригинала: David Wong.

резюме

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

Сначала у меня возникло ощущение, что я беру блок кода признака прямо в класс, но позже я понял, что был слишком наивен

Использование поездов в PHP:

проблема

Когда я использовал его в первый раз, потому что я всегда использовал абстрактные классы или определял внутренние объекты, а затем вызывал методы во внутренних объектах, у меня возникли следующие вопросы:

1. Можно ли внедрить несколько методов? Если да, то как обрабатывать методы с тем же именем

2. Как решить проблему дублирования имени между введенным методом и существующим методом

3. Можно ли определить абстрактные методы, потому что некоторые методы должны знать ситуацию, когда они используются. В абстрактных классах эта ситуация обычно решается путем вызова абстрактных методов

4. Можно ли определить поля

5. Могут ли поля или методы быть определены как статические

6. Может ли этот метод контролироваться властями

ответ на вопрос

1. В признак можно ввести несколько методов. Если в нескольких признаках есть методы с одинаковым именем, вам необходимо указать, какой метод использовать, следующим образом:

2. При введении метода с тем же именем, что и у существующего метода, сначала будет вызван определенный метод в классе, и порядок приоритета будет следующим: метод текущего класса > метод признака > метод родительского класса

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

4. Поле может быть определено в черте, и синтаксис такой же, как у класса

5. Статические методы и поля могут быть определены

6. Он может контролировать авторитет методов

7. Кроме того, в блок кода признака могут быть введены другие блоки кода признака, и синтаксис такой же, как и в классе

резюме

До сих пор я обнаружил новую проблему: в чем разница между чертой и абстрактным классом? Что такое повторное использование кода? Является ли это множественным наследованием? Существует ли функциональная разница между признаком и абстрактным классом? Если абстрактный класс может что-то сделать, черта может это сделать

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

Акцент на черте и абстрактном классе также отличается

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

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

Выше приведено небольшое введение в использование PHP с подробной интеграцией, я надеюсь вам помочь, если у вас есть какие-либо вопросы, пожалуйста, оставьте мне сообщение, редактор ответит вам вовремя. Большое вам спасибо за вашу поддержку!