参加以下测试类:
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::数字不起作用?