ما هو الضابط بطلاقة

الصورة

اليوم في PhpStorm ، أنشأت متغيرًا خاصًا ولاحظت أن IDE تقدم لي إنشاء نوعين من المستوطنين: المضارب العادي والمضارب بطلاقة.

لم ألتقِ مصطلح "فلورتر سيتير" الذي لم أقابله من قبل ، لذلك أنشأت الخيارين.

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

نعم ، لذا فإن الضابط بطلاقة هو الضابط الذي يعيد الكائن نفسه .

يا له من شيء غبي. من قد يحتاج إلى تصميم عرض

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

هذا للوهلة الأولى.

بعد ذلك بقليل خمنت. هذا ما يسمى بالسلاسل jQuery. بفضل الكائن الذي تم إرجاعه ، يمكننا تطبيق العداد التالي على الفور.

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

تم تصميم محددات اللغة بطلاقة لجعل الشفرة أكثر وضوحًا ونظافة.

نعم ، في جافا سكريبت هذا ملحوظ. في Java و PHP أيضًا. علاوة على ذلك ، هناك بالفعل وظائف ضبط مستخدمة بنشاط ، فلماذا لا تفعلها في النسخة بطلاقة.

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

في بايثون ، بالطبع ، يمكنك كتابة وظائف الضابط ، لكن الفوائد ليست واضحة. سيكون من الأنسب بالنسبة لي شخصياً استخدام محدد Python المعتاد ، والذي لا يبدو كوظيفة ، ولكن كعامل تعيين. إن فعل مستوطني النموذج set_var () في Python ، في رأيي ، يتعارض مع أفكار 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) 

في وقت لاحق ، وجدت مقالًا حول Fluent Interface ، حيث صادفت مثالًا أكثر ثعبانًا .

لقد انتهت دقيقة التعليم الذاتي.

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


All Articles