尝试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)