2017-09-19 33 views
0

ich über Design Patterns in PHP lese und ich die folgende Syntax sehe immer wieder, zum Beispielpassieren ein Objekt auf ein anderes Objekt Konstruktor in PHP

$newClass = new myClass(new myOtherClass());

Ich denke, dass dies eine Art von myOtherClass Verweis übergibt innerhalb myClass, so hier

class myClass{ 

    private $myOtherClass; 

    public function __construct(myOtherClass $myOtherClass) { 
     $this->myOtherClass= $myOtherClass; 
    } 

    public function myClassMethod($var) { 
     $this->myOtherClass->methodOfMyOtherClass($var); 
    } 
} 

das Konstrukt zu myOtherClass und verweist kann ich die methodOfMyOtherClass vonverwenden 0 von der myClassmyClassMethod, wie so $newClass->myClassMethod('a value here');

Meine Fragen sind:

Wie lautet der Name dieser Praxis ist?

Habe ich das Konzept richtig verstanden?

Wo kann ich mehr darüber lesen?

(erste Mal, dass ich diese Syntax sah here ist, das ist, wo ich meinen Code auch für diese Frage basiert)

+1

Sein genannt [Type Hinting] (http://php.net/manual/en/language.oop5.typehinting.php). –

+5

Abhängigkeitsinjektion –

+3

Die Angabe des Objekttyps, der in der Argumentenliste erforderlich ist, wird "type hinting" genannt, da wir Sie [hier] beantwortet haben (https://stackoverflow.com/questions/46288512/class-name-in-method) -along-with-variable) –

Antwort

1

Was ist der Name dieser Praxis?
In der Regel wird dies Dependency Injection genannt. myClass erforderlich myOtherClass, um seine Methoden ordnungsgemäß auszuführen, so ist myOtherClass eine Abhängigkeit von myClass. Lesen Sie mehr here.

Habe ich das Konzept richtig verstanden?
Es sieht aus wie Sie das Konzept richtig haben. Zumindest basierend auf Ihrer Probe, verwenden Sie es richtig.

Wo kann ich mehr darüber lesen?
Wenn Sie nur mehr über Dependency Injection lesen möchten, empfehle ich this. Im Allgemeinen sind die von der 12-Faktoren-App gelehrten Prinzipien sehr gut und es lohnt sich, darüber zu lesen. 12 Factor App.

Einige gute Bücher wert entlang dieser Linien zu lesen:
Clean Code
Patterns for Enterprise Architecture

+1

und [diesen Artikel] (https://martinfowler.com/articles/injection.html) auch empfehlen. – xmike

Verwandte Themen