Когда использовать статический модификатор в PHP

С внедрением зависимости клиент не должен получать его зависимости самостоятельно, его все подготовились заранее.

С фабриками, кто-то должен назвать их для окончания сгенерированных объектов к месту, где они необходимы.

различие заключается главным образом в этой строке, где вызов фабрики и выборка созданного объекта сделаны.

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

35
задан hakre 28 July 2012 в 14:08
поделиться

5 ответов

Выполняя некоторые обзоры кода в последнее время, я натолкнулся на несколько классов, в которых есть значительное количество статических методов ... и я не могу понять, почему

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

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

23
ответ дан 27 November 2019 в 07:19
поделиться

Статические методы используются для

  • функций, связанных со всей коллекцией объектов данного класса (например, singleton pattern )
  • функций, которые не являются связаны с чем-либо, но должны быть помещены в класс из-за объектно-ориентированного подхода (например, служебные классы)
5
ответ дан 27 November 2019 в 07:19
поделиться

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

Итак, используйте его всякий раз, когда вас интересуют эти свойства функции.

4
ответ дан 27 November 2019 в 07:19
поделиться

Нет ничего специфического для PHP в использовании статических методов.

Статические методы могут быть вызваны непосредственно в классе - нет необходимости в создании экземпляра объекта.

Таким образом, их основное использование - для методов, которые связаны с функциональностью классов, но не нуждаются в существующем экземпляре для использования в другом коде.

Типичным примером может быть специальный метод сравнения, который может быть передан, скажем, в функцию uasort () для сортировки массива объектов типа class.

3
ответ дан 27 November 2019 в 07:19
поделиться

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

1
ответ дан 27 November 2019 в 07:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: