从一个类调用静态变量,该类是另一个类的依赖项


Call static variable from a class that's a dependency of another class?

参加以下测试类:

class A {
    public static $number = 1;
}
class B {
    protected $a;
    public function __construct(A $a) {
        $this->a = $a;
    }
    public function getStatic() {
        echo $this->a::$number;
    }
}
$b = new B(new A);
$b->getStatic();

应该返回 1?我不确定,在将静态变量注入为另一个类的依赖项后,我正在尝试访问一个类的静态变量。

原因是,我有一个异步调用 x 次的类,但它需要一个针对 10 个类实例更新的全局静态。我不需要同一变量的 10 个实例。

假设有一个 interator 变量作为静态变量,它由每个类更新并保持一个变量。它不是每个类一个迭代器。

我做错了什么吗?我遇到了可怕的语法错误,意外的"::"(T_PAAMAYIM_NEKUDOTAYIM)

在类而不是对象上调用静态。

class A {
        public static $number = 1;
}
class B {
        protected $a;
            public function __construct(A $a) {
                $this->a = $a;
            }
            public function getStatic() {
                $class = get_class($this->a);
                echo $class::$number
            }
}
$b = new B(new A);
$b->getStatic();

或 A 类中的使用 方法

class A {
        public static $number = 1;
        public function getNumber()
        {
            return static::$number;
        }
}
class B {
        protected $a;
            public function __construct(A $a) {
                $this->a = $a;
            }
            public function getStatic() {
                echo $this->a->getNumber();
            }
}
$b = new B(new A);
$b->getStatic();

我更喜欢以后。

不必创建对象即可访问静态属性或方法。

仅访问/回显 B 类的 A::数字不起作用?

相关文章: