Qu'est-ce qu'un setter fluide

image

Aujourd'hui, dans PhpStorm, j'ai créé une variable privée et j'ai remarqué que l'IDE me propose de créer deux types de setters: le setter régulier et le setter fluide.

Le terme de "fluent setter" que je n'avais pas rencontré auparavant, j'ai donc créé les deux options.

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

Ouais, donc le passeur fluide est le passeur qui renvoie l'objet lui-même .

Quelle chose stupide. Qui pourrait avoir besoin d'une conception de vue

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

C'est à première vue.

Un peu plus tard, j'ai deviné. C'est ce qu'on appelle le chaînage jQuery. Grâce à l'objet retourné, nous pouvons appliquer immédiatement le setter suivant.

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

Les décanteurs fluides sont conçus pour rendre le code plus clair et plus propre.

Oui, en Javascript, cela se remarque. En Java et PHP aussi. De plus, il existe déjà des fonctions de setter activement utilisées, alors pourquoi ne pas les faire dans la version courante.

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

en Python, bien sûr, vous pouvez écrire des fonctions de définition, mais les avantages ne sont pas évidents. Il sera plus pratique pour moi d'utiliser personnellement le setter Python habituel, qui ne ressemble pas à une fonction, mais comme un opérateur d'affectation. Faire des setters de la forme set_var () en Python, à mon avis, contredit les idées de simplicité de Python.

 # 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) 

Plus tard, j'ai trouvé un article sur l'interface Fluent, où je suis tombé sur un exemple de python plus accrocheur .

La minute de l'auto-éducation est terminée.

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


All Articles