Ich verwende PHP 5 und habe von einer neuen Funktion im objektorientierten Ansatz gehört, die als "Methodenverkettung" bezeichnet wird. Was ist es genau? Wie implementiere ich es?
php
oop
method-chaining
Sanjay Khatri
quelle
quelle
Antworten:
Es ist wirklich ziemlich einfach, Sie haben eine Reihe von Mutator-Methoden , die alle die ursprünglichen (oder andere) Objekte zurückgeben. Auf diese Weise können Sie weiterhin Methoden für das zurückgegebene Objekt aufrufen.
Dies gibt "ab" aus
Probieren Sie es online aus!
quelle
$foo->setBar(1)->setBaz(2)
vs$table->select()->from('foo')->where('bar = 1')->order('ASC)
. Letzteres umfasst mehrere Objekte.$a = (new fakeString())->addA()->addB()->getStr();
Grundsätzlich nehmen Sie ein Objekt:
Rufen Sie eine Methode auf, die
return $this;
am Ende effektiv a ausführt:Da es dasselbe Objekt oder vielmehr einen Verweis auf dasselbe Objekt zurückgibt , können Sie weiterhin Methoden derselben Klasse vom Rückgabewert aufrufen, wie folgt:
Das war's wirklich. Zwei wichtige Dinge:
Wie Sie bemerken, ist es nur PHP 5. In PHP 4 funktioniert es nicht richtig, da Objekte nach Wert zurückgegeben werden. Dies bedeutet, dass Sie Methoden für verschiedene Kopien eines Objekts aufrufen, wodurch Ihr Code beschädigt wird.
Auch hier müssen Sie das Objekt in Ihren verkettbaren Methoden zurückgeben:
quelle
return &$this
in PHP4 tun ?Versuchen Sie diesen Code:
quelle
Methodenverkettung bedeutet, dass Sie Methodenaufrufe verketten können:
Dies bedeutet, dass method1 () ein Objekt zurückgeben muss und method2 () das Ergebnis von method1 () erhält. Methode2 () übergibt dann den Rückgabewert an Methode3 ().
Guter Artikel: http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html
quelle
Ein anderer Weg zur Verkettung statischer Methoden:
Berufung
quelle
Es gibt 49 Codezeilen, mit denen Sie Methoden über Arrays wie folgt verketten können:
In diesem Artikel erfahren Sie, wie Sie alle siebzig array_-Funktionen des PHP verketten.
http://domexception.blogspot.fi/2013/08/php-magic-methods-and-arrayobject.html
quelle
Wenn Sie Methodenverkettung wie in JavaScript meinen (oder einige Leute denken an jQuery), warum nicht einfach eine Bibliothek nehmen, die diesen Entwickler bringt? Erfahrung in PHP? Zum Beispiel Extras - https://dsheiko.github.io/extras/ Dieser erweitert PHP-Typen mit JavaScript- und Unterstreichungsmethoden und bietet Verkettung:
Sie können einen bestimmten Typ verketten:
oder
Alternativ können Sie polymorph gehen:
quelle
Unten ist mein Modell, das anhand der ID in der Datenbank gefunden werden kann. Die with ($ data) -Methode ist mein zusätzlicher Parameter für die Beziehung, daher gebe ich das $ this zurück, das das Objekt selbst ist. Auf meinem Controller kann ich es verketten.
quelle