Was ist ein fließender Setter?

Bild

Heute habe ich in PhpStorm eine private Variable erstellt und festgestellt, dass die IDE mir zwei Arten von Setzern bietet: den regulären Setter und den fließenden Setter.

Den Begriff "fließender Setter" habe ich bisher noch nicht kennengelernt, daher habe ich beide Optionen erstellt.

/* PHP */ class Foo { private $var; //  setter public function setVar($var) { $this->var = $var; } //  fluent setter public function setVar($var) { $this->var = $var; return $this; } } 

Ja, der fließende Setter ist also der Setter, der das Objekt selbst zurückgibt .

Was für eine dumme Sache. Wer braucht vielleicht ein Ansichtsdesign

 $object = $object->setVar(1); //     ,    $object->setVar(1); //      ,   $sameObject = $object->setVar(1); 

Dies ist auf den ersten Blick.

Wenig später vermutete ich. Dies wird als jQuery-Verkettung bezeichnet. Dank des zurückgegebenen Objekts können wir sofort den nächsten Setter anwenden.

 /* Javascript */ $('#elementId').val(13).css('font-size', '20px').appendTo(element2); //     : $('#elementId') .val(13) .css('font-size', '20px') .appendTo(element2); 

Fließende Setter sollen den Code klarer und sauberer machen.

Ja, in Javascript fällt dies auf. Auch in Java und PHP. Darüber hinaus gibt es bereits aktiv verwendete Setter-Funktionen. Warum also nicht in der fließenden Version?

 /* php */ $car->setColor('#f00')->setWeight('1200')->setPower(55000); $car ->setColor('#f00') ->setWeight('1200') ->setPower(55000); 

In Python können Sie natürlich Setter-Funktionen schreiben, aber die Vorteile liegen nicht auf der Hand. Für mich persönlich ist es bequemer, den üblichen Python-Setter zu verwenden, der nicht wie eine Funktion aussieht, sondern als Zuweisungsoperator. Setter der Form set_var () in Python zu machen, widerspricht meiner Meinung nach den Python-Ideen der Einfachheit.

 # python #  @property car.color = '#f00' car.weight = 1200 car.power = 55000 # fluent-,    .   ?   . car.color('#f00').weight('1200').power(55000) #      ... car.set_color('#f00').set_weight('1200').set_power(55000) #    ,    ,     . car.set_color('#f00') \ .set_weight('1200') \ .set_power(55000) 

Später fand ich einen Artikel über das Fluent Interface, in dem ich auf ein auffälligeres Python-Beispiel stieß .

Die Minute der Selbstbildung ist vorbei.

Source: https://habr.com/ru/post/de429020/


All Articles