PHP 在多次调用中持续存在的静态变量

PHP static variable persisting in multiple calls

我正在尝试使用静态可链接方法编写 class,但最奇怪的是我的变量在调用之间持续存在。

<?php

class foo {
    private static $a = '#';

    public static function more($string)
    {
        self::$a .= $string;
        return new static;
    }

    public static function print()
    {
        echo self::$a . "\n";
    }
}

foo::print();
foo::more('foo')->more('foo')->print();
foo::more('foo')->print();

输出:

#
#foofoo
#foofoofoo

第一行和第二行对我来说很合适。但是为什么第三行会有 3 个 foo 呢? foo class 中的 $a 变量在调用之间以某种方式持续存在。我认为静态调用创建了自己的临时对象,与之前的调用无关。

有人得到解释或解决方法吗?

根据定义,静态变量在调用之间是持久的。

静态 属性 链接到 class,而不是对象。

否则,它会在您的调用之间存储在哪里?