2012-11-29 111 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的冲突。