我正在尝试在我的一个库中创建一个全局上下文变量,但似乎无法弄清楚如何使变量坚持下去。以下是我的代码示例:
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
答案 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
用于访问它作为一个静态变量。