上下文变量php

时间:2012-01-05 18:51:18

标签: php class variables global-variables

我正在尝试在我的一个库中创建一个全局上下文变量,但似乎无法弄清楚如何使变量坚持下去。以下是我的代码示例:

class test{
    function tester(){
        echo context::getContext();
        echo '<br />';
        context::setContext(2);
        echo context::getContext();
        echo '<br />';
        new test2();
    }
}
class test2{
    public function __construct(){
        echo context::getContext();
    }
}
class context{
    protected static $contextNum = 0;
    public function getContext(){
        return isset($this->contextNum) ? $this->contextNum : 0;
    }
    public function setContext($num){
        $this->contextNum = $num;
    }
}

这最终回应:

0
2
0

我怎样才能让它回响?

0
2
2

2 个答案:

答案 0 :(得分:0)

更改

$this->contextNum = $num;
// and
return isset($this->contextNum) ? $this->contextNum : 0;

self::$contextNum = $num;
// and
return isset(self::$contextNum) ? self::$contextNum : 0;

对方法setContext()getContext()

使用静态修饰符

另外,我建议您将throw new Exception('Can\'t create instance of this class')方法__construct()添加到context

答案 1 :(得分:0)

试试这个:

class context(){
    protected static $contextNum = 0;
    public function getContext(){
        return isset(self::$contextNum) ? self::$contextNum : 0;
    }
    public function setContext($num){
        self::$contextNum = $num;
    }
}

$this->contextNum用于访问contextNum作为实例变量(即存在于类context的实例上的变量),而self::$contextNum用于访问它作为一个静态变量。