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.
以上がPHP で新しく作成されたオブジェクトのメソッドをチェーンする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。