2016-05-15 105 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

沒辦法,只好創建這個類的一個實例,因爲它包含的數據它是爲了繼承控制器引用一個模型類。