我试图将Globals变量放在该类的另一个变量中。但它没有用。错误日志显示
语法错误,意外T_VARIABLE 。
class data{
public $datav = $GLOBALS['dat'];
public static function get(){
return self::$datav;
}
}
我也尝试过替换self::$datav
;与$this->datav
;但它也给出了同样的错误。
我也想知道有没有办法使用类外的变量。 e.g:
$datav = array{'name'=>'assadf','asdf'=>'asddf'}
class data{
public static function get(){
return $datav['name'];
}
}
答案 0 :(得分:1)
在类中使用像这样的全局变量而不是打破类的封装。
最好通过__construct($var)
传递类似的值。但是由于你有一个定义为static的函数,我假设你想让这个类变为静态,所以不会为静态类调用__construct()
。
所以你必须创建一个像这样的setter方法: -
class data{
public $datav = NULL;
public static function set($var) {
$this->datav = $var;
}
public static function get(){
return $this->$datav;
}
}
然后像
一样打电话给你的班级data::set($GLOBALS['dat']);
$localVar = data::get();
答案 1 :(得分:-1)
必须为类属性分配一个常量值。此外,$datav
必须是静态的才能从get
方法访问。
class data{
public static $datav;
public static function get(){
if(!isset(self::$datav)) {
self::$datav = $GLOBALS['dat'];
}
return self::$datav;
}
}
对于第二个代码,您可以使用global
关键字告诉PHP您使用的变量来自外部作用域,而不是来自函数作用域:
$datav = array('name'=>'assadf','asdf'=>'asddf');
class data{
public static function get(){
global $datav;
return $datav['name'];
}
}
答案 2 :(得分:-2)
你应该使用global
让PHP知道这是在类外声明的全局变量。
$datav = "something";
class Data {
public static function get(){
global $datav;
return $datav;
}
}