代码之家  ›  专栏  ›  技术社区  ›  Emanuil Rusev

在一行中实例化并调用一个方法

  •  0
  • Emanuil Rusev  · 技术社区  · 15 年前

    有没有一种方法可以实例化一个类并在一行中调用它的一个方法?我希望下面的内容能起作用,但是没有:

    (new User())->get_name();
    
    4 回复  |  直到 12 年前
        1
  •  7
  •   Bouke    15 年前

    这是不可能的。但是,您可以创建一个返回新实例的静态方法。类似:

    class User {
        public static function create() {
            return new self();
        }
    }
    
    User::create()->get_name();
    
        2
  •  7
  •   carles    12 年前

    我知道这个问题由来已久,但回答可能会产生误导。

    由于版本5.4,您可以实例化和调用内联方法:

    (new Foo)->bar();
    

    http://docs.php.net/manual/en/migration54.new-features.php

        3
  •  2
  •   Raoul Duke    15 年前

    不,抱歉,这在PHP中不起作用。您可以使用静态工厂方法或类似的方法来解决这个问题。

        4
  •  0
  •   erikbstack    15 年前

    如果这对你有用,试试看。它从类而不是对象调用函数。

    User::get_name();