Search code examples
phpoopmethod-chainingfluent-interface

PHP method chaining or fluent interface?


I am using PHP 5 and I've heard of a new featured in the object-oriented approach, called 'method chaining'. What is it exactly? How do I implement it?


Solution

  • It's rather simple, really. You have a series of mutator methods that all return the original (or other) object. That way, you can keep calling methods on the returned object.

    <?php
    class fakeString
    {
        private $str;
        function __construct()
        {
            $this->str = "";
        }
        
        function addA()
        {
            $this->str .= "a";
            return $this;
        }
        
        function addB()
        {
            $this->str .= "b";
            return $this;
        }
        
        function getStr()
        {
            return $this->str;
        }
    }
    
    
    $a = new fakeString();
    
    
    echo $a->addA()->addB()->getStr();
    

    This outputs "ab"

    Try it online!