Когда внедрять и расширять?


  • когда implement или extend использоваться?
  • Каковы некоторые реальные примеры?

это правильно?

реализация по-видимому, это способ обеспечить, чтобы определенные методы существовали в классе и чтобы эти вызовы функций методов были правильно отформатированы. Реализация - это не способ передачи переменных или "настройки", хотя в классе?

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

расширения классы делает расширенный (ребенок?) класс наследует все от своего родительского класса, кроме методов и переменных, объявленных как private?

ожидаемый сценарий реальной жизни: у меня есть один класс под названием sessions С двумя дочерними классами с именем sessioncookies и databasesessions. sessioncookies и databasesessions, совместно наследуют несколько взаимных вариантов конфигурации от их родительских встреч, делая его легким изменить вариант конфигурации для того чтобы повлиять на все виды окончательного хранения данных посетителя.

1 77

1 ответ:

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

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

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

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

Я считаю, что ваше понимание наследования в основном правильно. Следующим шагом было бы использовать его в производстве.