Реализация fluent interface на PHP

Текучий интерфейс (англ. fluent interface, название придумано Эриком Эвансом и Мартином Фаулером) — способ реализации в разработке программного обеспечения, объектно-ориентированного API, нацеленный на повышение читабельности исходного кода программы.

Текучий интерфейс хорош тем, что упрощается множественный вызов методов одного объекта. Обычно это реализуется использованием цепочки методов, передающих контекст вызова следующему звену.

Данный стиль написания кода можно увидеть у разработчиков Zend-фреймворка, например, в классе Zend_Db.

Реализуется текучий интерфейс достаточно просто:


<?php
class Car {
        private $speed;
        private $color;
        private $doors;
 
        public function setSpeed($speed){
                $this->speed = $speed;
                return $this;
        }
 
        public function setColor($color) {
                $this->color = $color;
                return $this;
        }
 
        public function setDoors($doors) {
                $this->doors = $doors;
                return $this;
        }
}
 
// Обычная реализация
$myCar2 = new Car();
$myCar2->setSpeed(100);
$myCar2->setColor('blue');
$myCar2->setDoors(5);
 
// Текучий интерфейс
$myCar = new Car();
$myCar->setSpeed(100)->setColor('blue')->setDoors(5);
?>

Ссылки

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>