2012-11-29 22 views
9

Ich habe ein paar Klassen, die oft durchlaufen werden var_dump oder print_r.Private statische Variablen in PHP-Klasse

Innerhalb dieser Klassen habe ich ein paar Variablen, die Verweise auf andere, ziemlich große Objekte, die immer nur eine Instanz von jedem haben und nur innerhalb der Klassen verwendet werden (außerhalb der Klassen haben einen eigenen Verweis auf diese Klassen) Ich möchte nicht, dass diese Klassen in der Ausgabe gedruckt werden, also habe ich sie als private static deklariert, was gut funktioniert.

Aber meine IDE (PhpStorm) einen Fehler-Level-Alarm mit Member has private access schnippen, wenn ich auf sie zugreifen durch self::$ci->...

Ich frage mich, ob dies ein Fehler in der IDE ist, betont werden, weil es wahrscheinlich ein Fehler ist (auch bekannt als es ist statisch, aber nichts außerhalb der Klasse kann darauf zugreifen, warum möchtest du das tun?), oder weil es tatsächlich etwas syntaktisch falsch ist?

Als Beispiel hier ein Teil der Klasse ist, Beachten Sie, dass =& get_instance(); gibt einen Verweis auf die 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

Müsste spezifischeren Code sehen Ich nehme an (obwohl das 'self :: $ ci->' genug ein Bild malt), aber ich würde vermuten, es ist nur ein seltsames Verhalten von PHPStorm. –

+0

@MichaelBerkowski macht der hinzugefügte Code ein besseres Bild? – Hailwood

+0

Vielleicht verhält es sich so, weil Sie 'selbst' in einer nicht statischen Methode aufrufen? –

Antwort

4

In Ihrem product() Methode Sie versuchen self::$ci das private Element zuzugreifen. Ihre IDE ist der Ansicht, dass auf diese Methode von überall zugegriffen werden kann, und erkennt einen Konflikt mit dem privaten statischen Member $ci.