从一个属于另一个类的依赖的类调用静态变量?

时间:2014-11-25 21:26:03

标签: php class static scope

参加以下测试课程:

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)

2 个答案:

答案 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 ::号码不起作用?