O que é um setter fluente

imagem

Hoje, no PhpStorm, criei uma variável privada e notei que o IDE me oferece dois tipos de setters: o regular e o fluente.

O termo "setter fluente" que eu não conhecia antes, então criei as duas opções.

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

Sim, então o setter fluente é o setter que retorna o próprio objeto .

Que coisa estúpida. Quem pode precisar de um design de vista

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

Isto é à primeira vista.

Um pouco mais tarde, adivinhei. Isso é chamado de encadeamento jQuery. Graças ao objeto retornado, podemos aplicar imediatamente o próximo levantador.

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

Os setters fluentes são projetados para tornar o código mais claro e limpo.

Sim, em Javascript, isso é perceptível. Em Java e PHP também. Além disso, já existem funções ativadoras usadas ativamente; por que não fazê-las na versão fluente?

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

no Python, é claro, você pode escrever funções de configuração, mas os benefícios não são óbvios. Será mais conveniente para mim usar pessoalmente o configurador Python usual, que não se parece com uma função, mas como um operador de atribuição. Fazer setters da forma set_var () no Python, na minha opinião, contradiz as idéias de simplicidade do 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) 

Mais tarde, encontrei um artigo sobre a Interface Fluente, onde me deparei com um exemplo de python mais atraente .

O minuto da auto-educação acabou.

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


All Articles