Heim  >  Artikel  >  Backend-Entwicklung  >  So verketten Sie Methoden für neu erstellte Objekte in PHP

So verketten Sie Methoden für neu erstellte Objekte in PHP

Susan Sarandon
Susan SarandonOriginal
2024-10-18 14:58:41613Durchsuche

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()-&gt;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())-&gt;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()-&gt;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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn