我正在尝试将Globals变量放入该类的另一个变量中。但这是行不通的。显示错误日志
语法错误,意外的T_VARIABLE。
class data{
public $datav = $GLOBALS['dat'];
public static function get(){
return self::$datav;
}
}我也尝试过用self::$datav;替换$this->datav;,但这也会导致同样的错误。
我还想知道是否有任何方法来使用这个变量,它在类之外。例如:
$datav = array{'name'=>'assadf','asdf'=>'asddf'}
class data{
public static function get(){
return $datav['name'];
}
}发布于 2015-03-09 11:44:39
在类中使用这样的全局,会破坏类的封装。
最好通过__construct($var)传递这样的值。但是,由于您有一个定义为静态的函数,我假设您希望使这个类是静态的,这样就不会为静态类调用__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();发布于 2015-03-09 11:46:27
类属性必须分配一个常量值。此外,$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'];
}
}发布于 2015-03-09 11:40:11
您应该使用global让PHP知道这是一个在类之外声明的全局变量。
$datav = "something";
class Data {
public static function get(){
global $datav;
return $datav;
}
}https://stackoverflow.com/questions/28941006
复制相似问题