Черты против интерфейсов - PullRequest
313 голосов
/ 09 февраля 2012

В последнее время я пытаюсь изучать PHP, и я зацикливаюсь на особенностях.Я понимаю концепцию горизонтального повторного использования кода и не хочу обязательно наследовать от абстрактного класса.Что я не понимаю, так это: в чем принципиальная разница между использованием черт и интерфейсов?

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

Ответы [ 13 ]

1 голос
/ 05 июня 2018

Этот признак такой же, как класс, который мы можем использовать для множественного наследования, а также для повторного использования кода.

Мы можем использовать черты внутри класса, а также мы можем использовать несколько черт в одном классе с «ключевым словом use».

Интерфейс используется для повторного использования кода так же, как черта

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

http://php.net/manual/en/language.oop5.traits.php http://php.net/manual/en/language.oop5.interfaces.php

1 голос
/ 18 октября 2015

Интерфейс - это контракт, в котором говорится, что «этот объект способен делать эту вещь», тогда как черта дает объекту возможность делать эту вещь.

Черта - это, по сути, способ «копировать и вставлять» код между классами.

Попробуйте прочитать эту статью, Что такое черты PHP?

0 голосов
/ 16 сентября 2013

Основное отличие состоит в том, что с интерфейсами вы должны определить фактическую реализацию каждого метода в каждом классе, который реализует указанный интерфейс, так что вы можете иметь много классов, реализующих один и тот же интерфейс, но с разным поведением, в то время как черты - это просто кускикод, введенный в класс;Другое важное отличие состоит в том, что методы trait могут быть только методами класса или static-методами, в отличие от методов интерфейса, которые также могут (и обычно являются) методами экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...