Глобальная vs функция vs статический метод класса

Допустим, у вас есть уникальный объект, который используется всеми другими классами и функциями ... что-то вроде $ application .

Как бы вы могли получить доступ к этому объекту в своих функциях?

  1. используя глобальную переменную в каждой из ваших функций:

     global $ application;
    $ application-> doStuff ();
    
  2. создание функции, подобной application () , которая создает экземпляр объекта в статической переменной и возвращает ее; затем используйте эту функцию везде, где вам нужно получить доступ к объекту:

     application () -> doStuff ();
    
  3. создать одноэлементный объект, например статический метод внутри класса объекта, который возвращает единственный экземпляр, и использовать этот метод для доступа к объекту:

     Application :: getInstance () -> doStuff ();
    
  4. KingCrunch & skwee: передать объект приложения в качестве аргумента каждой функции / классу, где это необходимо

     ...
    публичная функция __construct (Application $ app, ...) {
     ....
    

Если есть другие варианты, опубликуйте их. Мне интересно, какой из этих вариантов наиболее эффективен / считается «лучшей практикой».

5
задан Alex 8 February 2012 в 21:31
поделиться