2012-11-29 166 views
9

我有幾個類經常運行通過var_dumpprint_rphp中的私有靜態變量類

在這些類裏面我有幾個變量是引用其他相當大的對象的,它們只有一個每個實例,只在類中使用(類外部有它們自己對這些類的引用)不希望這些類打印在輸出中,所以我宣佈它們爲private static這是正常工作。

但我的IDE(PHPstorm)被彈了Member has private access錯誤級別的警報,當我訪問他們通過self::$ci->...

我想知道,如果這是在IDE中的錯誤,凸顯因爲它可能是一個錯誤(又名它是靜態的,但是課堂外沒有人可以訪問它,爲什麼要這樣做呢?),還是因爲它實際上在語法上有錯誤?

舉例來說這裏是類的一部分, 注意=& get_instance();返回Code Igniter super object

private static $ci = null; 

public function __construct(){ 
    self::$ci = self::$ci =& get_instance(); 
} 

public function product() { 
    if ($this->product == null) { 
     self::$ci->products->around($this->relative_date); 
     $this->product = self::$ci->products->get($this->product_id); 
    } 
    return $this->product; 
} 
+0

需要看到更具體的代碼,我想(儘管'self :: $ ci->'畫了足夠的圖片),但我想這只是PHPStorm的一個奇怪的行爲。 –

+0

@MichaelBerkowski添加的代碼是否繪製出更好的圖片? – Hailwood

+0

也許它的行爲方式是因爲你在非靜態方法中調用'self'? –

回答

4

參考在你product()方法你想訪問私有成員self::$ci。您的IDE認爲可以在任何地方訪問此方法,並檢測與私有靜態成員$ci的衝突。