2016-05-15 71 views
0

在调试过程中我已经剥夺了堂课下来,保留使用,我也不能外的类或内得到一个值(return语句)问题进入公共PHP静态属性

_SITE::$cfg; 

虽然

self::$cfg 

是正确的有

class _SITE { 
    public static $cfg; 

    public static function cfg_add($newcfg) { 
      self::$cfg = $newcfg; 
      return self::$cfg; 
    } 
} 

从感激地收到答案我需要ŧ o澄清该值需要作为数组进行更改/添加。 修正的例子 - 所以它的一个静态类持有财产$ cfg,它打算使用_SITE :: $ cfg访问并使用_SITE :: cfg_add更新

+1

[究竟是什么问题](https://3v4l.org/Oj51a)? –

+0

我似乎无法分配一个值_SITE :: $ cfg – Datadimension

+0

https://eval.in/571769 – splash58

回答

0

您无法直接获取类_SITE实例的值,因为你从来没有为这个实例设置一个值。

但给定的代码给出的值为$cfg,同时也注意到方法cfg_add()分配了一个数组值。

做,在这种方式

class _SITE { 
    public static $cfg; 

    public function __construct($value=array()) { 
    self::$cfg = $value; 
    } 

    public static function cfg_add() { 
    self::$cfg = array(1, 2, 3); 
     return self::$cfg; 
    } 
} 

$test = _SITE::cfg_add(); 
foreach ($test as $key => $value) { 
    echo "$value"; 
} 

或以这种方式

$obj = new _SITE(array(1,2,3)); 
foreach ($obj::$cfg; as $key => $value) { 
    echo "$value"; 
} 
+0

该类旨在被静态使用,因此不使用__construct – Datadimension

+0

这取决于您,它只是您的代码的一个示例,但您访问实例的方式会让您变为空。在获得_SITE :: $ cfg的值之前,您需要有一个类设置器。 – Fil

0

没办法,只好创建这个类的一个实例,因为它包含的数据它是为了继承控制器引用一个模型类。