Intereting Posts
Как сохранить переменную Javascript как файл на клиентском ПК Как отключить ошибки кода состояния HTTP по умолчанию на сервере Zend? memory_get_peak_usage () с "реальным использованием" Как сделать Drupal 7 Редактируемое поле в таблице только для администратора Woocommerce получает пользовательские значения полей выбора на странице благодарности Как добавить новый вид (а также новый тип элемента меню) к существующим компонентам Joomla 2.5? Поддерживаемые форматы ImageMagick не имеют значения Какую библиотеку PHP RPC (XML или JSON) вы успешно использовали? Как выполнить код после trigger_error (…, E_USER_WARNING) в модульном тесте (PHPUnit)? Тестовый скрипт для параллелизма транзакций для postgresql PHP TWITTER bot, чтобы следовать / отменить подписку с помощью api версии 1.1 и курсоров Найти Windows 32 или 64 бит с помощью PHP Как поймать Исключение в symfony 2? Срок действия php cURL истекает через 120308 миллисекунд при получении X из -1 байта База данных Xml to sql

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

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

Это верно?

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

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

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

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

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

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

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

Наследование – большая концепция в ООП, которая выходит за рамки простого PHP. Я рекомендую вам прочитать статью Википедии о наследовании и, возможно, « Шаблоны дизайна» от «Банды четырех» .

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