参加以下测试课程:
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个实例。
所以说作为静态的交互变量,它会被每个类更新并保留一个变量。它不是每个类的一个迭代器。
我做错了吗?我遇到了可怕的语法错误,意外的' ::' (T_PAAMAYIM_NEKUDOTAYIM)
答案 0 :(得分:1)
在Class not object上调用static。
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();
我以后更喜欢。
答案 1 :(得分:-1)
您不必创建对象来访问静态属性或方法。
只是从B类访问/回显A ::号码不起作用?