Maison  >  Article  >  développement back-end  >  Comment enchaîner des méthodes sur des objets nouvellement créés en PHP

Comment enchaîner des méthodes sur des objets nouvellement créés en PHP

Susan Sarandon
Susan Sarandonoriginal
2024-10-18 14:58:41613parcourir

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn