Принцип обращения зависимостей в PHP - PullRequest
8 голосов
/ 10 марта 2011

Поскольку PHP является свободно типизированным языком, как можно применять принцип DIP в PHP?

Практический пример был бы очень признателен.

Ответы [ 2 ]

1 голос
/ 04 августа 2016

DIP - это руководство, которое:

A. Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций.

B. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Это актуально независимо от того, погодные «модули» на самом деле являются классами, функциями, модулями (которых нет в php как таковых), чертами или чем-то еще.

Да. Вы можете использовать DIP в PHP. На самом деле вы можете использовать его в PHP без написания классов! Вы можете управлять зависимостями между функциями так же, как и для классов в DIP.

0 голосов
/ 10 марта 2011

В PHP 5 введена «подсказка типов», которая позволяет функциям и методам объявлять «типизированные» параметры (объекты). Для большинства случаев портирование примеров не должно быть большой задачей, например с Java на PHP 5.

Действительно простой пример:

interface MyClient
{
  public function doSomething();
  public function doSomethingElse();
}

class MyHighLevelObject
{
  private $client;

  public __construct(MyClient $client)
  {
    $this->client = $client;
  }

  public function getStuffDone()
  {
    if ( any_self_state_check_or_whatever )
      $client->doSomething();
    else
      $client->doSomethingElse();
  }

  // ...
}

class MyDIP implements MyClient
{
  public function doSomething()
  {
    // ...
  }

  public function doSomethingElse()
  {
    // ...
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...