2016-05-12 15 views
0

Ich baute kleine MVC-Struktur und ich erstellte auch kleine grundlegende Abhängigkeit Invoker basierend auf Reflection-Klasse. Meine Frage ist, welche beste Praxis für die Verwendung abhängiger Klasse ist. Zum Beispiel habe ich Klasse Call Request und ich werde verwenden.Singleton oder statisch? Best Practice für PHP?

public function method(Request $request); 

Meine Frage ist, wie Antrag Klasse

  1. Verwendung von Singleton und nicht statische Klasse var

    class Request{ 
    protected $var; 
    } 
    
  2. Verwendung der neuen Instanz mit Static Var

    class Request{ 
    protected static $var; 
    } 
    
laden
+0

Checkout dies: http://www.phptherightway.com/pages/Design-Patterns.html#Singleton & in einer allgemeinen Weise, wenn Best Practices etwas Interesse für Sie, Checkout http://www.phptherightway.com/:) – Bobot

Antwort

0

Die Wahl zwischen einem Singleton-Muster und einer "neuen Instanz mit statischem" löst die Abhängigkeitsinjektionsfrage nicht wirklich.

Allerdings empfehle ich Ihnen, die singleton design pattern verwenden, um auf Ihre Request Objekt zugreifen.

Warum?

  • Dieses Muster passt Ihre Bedürfnisse, es respektiert die „ein und einzigartige Objektinstanz“ für Ihre Request Klasse.
  • Entwickler sollten sich dieser Struktur bewusst sein, das ist ein Beweis für Nachhaltigkeit.
  • Encapsulation
  • Entwurfsmuster sind 99% "best pratices"

Und die Dependency Injection?

Aus meiner Erfahrung empfehle ich Ihnen, einen Blick auf die factory design pattern zu werfen.
Sie zentralisieren die Erstellung Ihrer Objekte und die Abhängigkeiten Injektion wird viel einfacher und sauberer.


Natürlich ist dies nur für Code ist mein Weg, ich will nicht behaupten, die besten Praktiken zu haben, und dies sollte diskutierbar sein.

Hoffe, das wird Ihnen helfen.

0

Der sauberste Ansatz ist keiner von beiden. Stattdessen sollten Sie Ihr DC an die Klassenkonstruktoren übergeben, die es benötigen.

Einen Abhängigkeitscontainer zu haben, ist so locker, wie er ist, ohne globale Konstrukte zu überschreiten (statische Elemente sind global).