<legend id='60wbU'><style id='60wbU'><dir id='60wbU'><q id='60wbU'></q></dir></style></legend>

<small id='60wbU'></small><noframes id='60wbU'>

  • <i id='60wbU'><tr id='60wbU'><dt id='60wbU'><q id='60wbU'><span id='60wbU'><b id='60wbU'><form id='60wbU'><ins id='60wbU'></ins><ul id='60wbU'></ul><sub id='60wbU'></sub></form><legend id='60wbU'></legend><bdo id='60wbU'><pre id='60wbU'><center id='60wbU'></center></pre></bdo></b><th id='60wbU'></th></span></q></dt></tr></i><div id='60wbU'><tfoot id='60wbU'></tfoot><dl id='60wbU'><fieldset id='60wbU'></fieldset></dl></div>
  • <tfoot id='60wbU'></tfoot>
    • <bdo id='60wbU'></bdo><ul id='60wbU'></ul>

        如何在新创建的对象上链接方法?

        时间:2023-06-22

        1. <tfoot id='kKi5J'></tfoot>

            <legend id='kKi5J'><style id='kKi5J'><dir id='kKi5J'><q id='kKi5J'></q></dir></style></legend>

            <small id='kKi5J'></small><noframes id='kKi5J'>

              <tbody id='kKi5J'></tbody>
              <bdo id='kKi5J'></bdo><ul id='kKi5J'></ul>
              <i id='kKi5J'><tr id='kKi5J'><dt id='kKi5J'><q id='kKi5J'><span id='kKi5J'><b id='kKi5J'><form id='kKi5J'><ins id='kKi5J'></ins><ul id='kKi5J'></ul><sub id='kKi5J'></sub></form><legend id='kKi5J'></legend><bdo id='kKi5J'><pre id='kKi5J'><center id='kKi5J'></center></pre></bdo></b><th id='kKi5J'></th></span></q></dt></tr></i><div id='kKi5J'><tfoot id='kKi5J'></tfoot><dl id='kKi5J'><fieldset id='kKi5J'></fieldset></dl></div>

                1. 本文介绍了如何在新创建的对象上链接方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我想知道是否有办法在 PHP 中为新创建的对象链接方法?

                  I would like to know whether there's a way to chain methods on a newly created object in PHP?

                  类似于:

                  class Foo {
                      public function xyz() { ... return $this; }
                  }
                  
                  $my_foo = new Foo()->xyz();
                  

                  有人知道实现这一目标的方法吗?

                  Anyone know of a way to achieve this?

                  推荐答案

                  在 PHP 5.4+ 中,解析器已被修改,因此您可以执行类似的操作

                  In PHP 5.4+, the parser's been modified so you can do something like this

                  (new Foo())->xyz();
                  

                  将实例化在括号中,并用链子连接起来.

                  Wrap the instantiation in parenthesis, and chain away.

                  在 PHP 5.4 之前,当您使用

                  Prior to PHP 5.4, when you're using the

                  new Classname();
                  

                  语法,您不能将方法调用链接到实例化之外.这是 PHP 5.3 语法的限制.一旦对象被实例化,您就可以将其链接起来.

                  syntax, you can't chain a method call off the instantiation. It's a limitation of PHP 5.3's syntax. Once an object is instantiated, you can chain away.

                  我见过用来解决这个问题的一种方法是某种静态实例化方法.

                  One method I've seen used to get around this is a static instantiation method of some kind.

                  class Foo
                  {
                      public function xyz()
                      {
                          echo "Called","
                  ";
                          return $this;
                      }
                  
                      static public function instantiate()
                      {
                          return new self();
                      }
                  }
                  
                  
                  $a = Foo::instantiate()->xyz();
                  

                  通过在静态方法中包装对 new 的调用,您可以使用方法调用实例化一个类,然后您就可以自由地将其链接起来.

                  By wrapping the call to new in a static method, you can instantiate a class with method call, and you're then free to chain off that.

                  这篇关于如何在新创建的对象上链接方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:__construct 函数是做什么用的? 下一篇:如何在 PHP 中使用 call_user_func_array 调用构造函数

                  相关文章

                  <small id='7JbMv'></small><noframes id='7JbMv'>

                      <tfoot id='7JbMv'></tfoot>
                    1. <legend id='7JbMv'><style id='7JbMv'><dir id='7JbMv'><q id='7JbMv'></q></dir></style></legend>
                      • <bdo id='7JbMv'></bdo><ul id='7JbMv'></ul>

                      <i id='7JbMv'><tr id='7JbMv'><dt id='7JbMv'><q id='7JbMv'><span id='7JbMv'><b id='7JbMv'><form id='7JbMv'><ins id='7JbMv'></ins><ul id='7JbMv'></ul><sub id='7JbMv'></sub></form><legend id='7JbMv'></legend><bdo id='7JbMv'><pre id='7JbMv'><center id='7JbMv'></center></pre></bdo></b><th id='7JbMv'></th></span></q></dt></tr></i><div id='7JbMv'><tfoot id='7JbMv'></tfoot><dl id='7JbMv'><fieldset id='7JbMv'></fieldset></dl></div>