Home >Backend Development >PHP Tutorial >How to Chain Methods on Newly Created Objects in PHP
Chaining Methods on Newly Created Objects in PHP
In PHP, there is a common desire to chain methods on a newly created object, similar to the example shown below:
<code class="php">class Foo { public function xyz() { ... return $this; } } $my_foo = new Foo()->xyz();</code>
PHP 5.4+ Solution
Starting in PHP 5.4, a change in the parser allows for chaining methods on newly created objects. This can be achieved by wrapping the instantiation in parentheses:
<code class="php">(new Foo())->xyz();</code>
Pre-PHP 5.4 Solution
Prior to PHP 5.4, chaining methods on newly created objects was not possible directly using the new Classname(); syntax. However, there are workarounds to accomplish this:
Static Instantiation Method
One common approach is to create a static instantiation method within the class. This method can then be used to instantiate the class with an initial method call:
<code class="php">class Foo { public function xyz() { echo "Called","\n"; return $this; } static public function instantiate() { return new self(); } } $a = Foo::instantiate()->xyz();</code>
By wrapping the instantiation in a static method, you can achieve the desired chaining behavior.
The above is the detailed content of How to Chain Methods on Newly Created Objects in PHP. For more information, please follow other related articles on the PHP Chinese website!