为什么无法用PHP返回self?

js-*_*der 5 php oop static

在PHP中,无法将self返回链静态方法。这限制了静态方法的使用,因为链接非常有用,并且您必须使用实例来链接方法。

PHP开发人员决定不允许返回的原因有self哪些?还是self一般来说不可能返回OOP?

Nic*_*sai 7

尝试return new static()return new self()

class Calculator
{
    private static $_var = 0;

    public static function startFrom($var)
    {
        self::$_var = $var;
        return new static();
    }

    public static function add($var)
    {
        self::$_var += $var;
        return new static();
    }

    public static function sub($var)
    {
        self::$_var -= $var;
        return new static();
    }

    public static function get()
    {
        return self::$_var;
    }
}
Run Code Online (Sandbox Code Playgroud)

这可用于链静态方法:

echo Calculator::startFrom(10)
    ->add(5)
    ->sub(10)
    ->get(); // return 5
Run Code Online (Sandbox Code Playgroud)

新自我与新静态


Luc*_*Luc 0

如果一个与你没有关系的人要求你放弃自己并回到不存在的事物中,你会有什么感觉?

  • 幸运的是 PHP 没有任何感觉,因为它每天都会被告知数百万次“die()”。 (42认同)