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.
Das obige ist der detaillierte Inhalt vonSo verketten Sie Methoden für neu erstellte Objekte in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!