Chaining Static Method

This lesson shows how to use method chaining in PHP OOP.
With the help of php method chaining we can call more than one method or function of the class in single instruction.

$object->method_1()->method_2()
The way to chain method invocations is to return the object from the previous call, using: return $this in the code of the previous method (method_1() ).

- Here is an example, a PHP class that can be used to calculate the area and perimeter of rectangle (see the comments in code, and test it yourself).
class Rectangle {
  public $x = 0;
  public $y = 0;

  // sets $x and $y values
  public function setXY($x, $y){
    $this->x = $x;
    $this->y = $y;

    return $this;     // returns object instance
  }

  // returns rectangle area
  public function area(){
    return $this->x * $this->y;
  }

  // returns rectangle perimeter
  public function perimeter(){
    return 2 * ($this->x + $this->y);
  }
}

// creates an object instance of the class
$obR = new Rectangle;

// outputs area and perimeter
echo $obR->setXY(3, 4)->area();          // 12
echo '<br/>'. $obR->setXY(3, 4)->perimeter();       // 14

• You can chain more than two methods, the technique is the same, all the previous methods must return the object instance.
- Here is an example that chains three methods. A PHP class to define HTML tag with ID, CSS class, and content (study the code and test it yourself).
class setTag {
  private $id = '';        // tag id attribute
  private $class = '';     // tag class attribute

  // sets $id
  public function setId($id){
    $this->id = ' id="'. $id .'"';

    return $this;     // returns object instance
  }

  // sets $class
  public function setClass($class){
    $this->class = ' class="'. $class .'"';

    return $this;     // returns object instance
  }

  // returns the HTML tag and its content
  public function getTagCnt($tag, $cnt){
    return '<'. $tag .$this->id. $this->class .'>'. $cnt .'</'. $tag. '>';
  }
}

// creates an object of the class
$obTag = new setTag;

// variables with tag type and content
$tag = 'div';
$cnt = 'http://coursesweb.net';

// chains methods to set ID, Class, and output HTML <div> tag with these attributes and content in a single instruction
echo $obTag->setId('some_id')->setClass('cls')->getTagCnt($tag, $cnt);

/* Outputs:
 <div id="some_id" class="cls">http://coursesweb.net</div>
*/
The instruction that chains the methods in the code above:
echo $obTag->setId('some_id')->setClass('cls')->getTagCnt($tag, $cnt);
It is the same with this:
// sets ID and css class, then outputs the HTML tag with content
$obTag->setId('some_id');
$obTag->setClass('cls');
echo $obTag->getTagCnt($tag, $cnt);

Chaining Static Method

To can chain a static method you must return the Instance of the class in static method, using: return new self.
In the instruction that calls and chains the static method use the Class Name.
Syntax:
className::staticMethod()->otherMethod()
- Example, a PHP class with a static method that sets the value of a private static property (private cannot be accessed outside class), and a public method that returns the private property value.
<?php
class clsData {
  // private property to cannot be accessed outside class
  private static $data;

  // static method that sets $data value
  public static function setData(){
    self::$data = 'http://coursesweb.net/php-mysql/';

    return new self;      // returns class instance
  }

  // method to return $data value
  public function getData(){
    return self::$data;
  }
}

// accessing getData() method after setData()
echo clsData::setData()->getData();       // http://coursesweb.net/php-mysql/

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag is used to add lists into <ul> and <ol> elements?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://coursesweb.net/css/</li>
</ul>
Which value of the "display" property creates a block box for the content and ads a bullet marker?
block list-item inline-block
.some_class {
  display: list-item;
}
Which instruction converts a JavaScript object into a JSON string.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicate the PHP class used to work with HTML and XML content in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
PHP Method Chaining

Last accessed pages

  1. PHP OOP - Constructor Method (3127)
  2. SSEP - Site Search Engine PHP-Ajax (4261)
  3. Super Dragon Mahjongg (534)
  4. The Rise Of Atlantis (94)
  5. Butterfly Kyodai (1172)

Top accessed pages

  1. Courses Web: PHP-MySQL JavaScript Ajax HTML CSS Flash-AS3 (45775)
  2. Read Excel file data in PHP - PhpExcelReader (34434)
  3. PHP-MySQL free course, online tutorials PHP MySQL code (34319)
  4. Get Attribute (ID, Class, Name, Title, Src) with jQuery (30908)
  5. PHP PDO - exec (INSERT, UPDATE, DELETE) MySQL (28149)