2016-05-12 2 views
0

Я построил небольшую структуру mvc, и я также создал небольшой базовый Invendency Invoker на основе класса Reflection. Мой вопрос в том, какой из них лучше всего подходит для использования зависимого класса. Например, у меня есть класс Call Request, и я буду использовать.Синглтон или статический? Лучшая практика для php?

public function method(Request $request); 

Мой вопрос заключается в том, чтобы загрузить запрос класс

  1. Использование Singleton и не связанные статический класс вар

    class Request{ 
    protected $var; 
    } 
    
  2. Использование нового экземпляра с Static Var

    class Request{ 
    protected static $var; 
    } 
    
+0

Оформить заказ: http://www.phptherightway.com/pages/Design-Patterns.html#singleton & в общем случае, если лучшие практики заинтересованы в вас, выезд http://www.phptherightway.com/:) – Bobot

ответ

0

Выбор между одноэлементным рисунком и «новым экземпляром со статикой» на самом деле не разрешает вопрос инжекционной зависимости.

Однако я предлагаю вам использовать singleton design pattern для доступа к вашему Request объекту.

Почему?

  • Эта модель соответствует вашим потребностям, он уважает «один и уникальный экземпляр объекта» для вашего Request класса.
  • Разработчики должны знать об этой структуре, что является доказательством устойчивости.
  • Инкапсуляция
  • Дизайн модель являются 99% "лучшими" обычаями

И инъекция зависимости?

Из моего опыта я предлагаю вам взглянуть на factory design pattern.
Вы будете централизовать создание своих объектов, и инъекции зависимостей будут намного проще и чище.


Конечно, это только мой способ кодирования, я не претендую на то, чтобы иметь лучшие практики, и это должно обсуждаться.

Надеюсь, это вам поможет.

0

Самый чистый подход не является ни тем, ни другим. Вместо этого вы должны передать DC в конструкторы классов, которые в этом нуждаются.

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

Смежные вопросы