2012-11-29 40 views
9

Tôi có một vài lớp thường chạy qua var_dump hoặc print_r. Bên trong các lớp này, tôi có một vài biến được tham chiếu đến các đối tượng khác, lớn hơn chỉ có một thể hiện của mỗi và chỉ được sử dụng bên trong các lớp (bên ngoài các lớp có tham chiếu riêng của chúng với các lớp này). không muốn các lớp này được in ở đầu ra, vì vậy tôi đã khai báo chúng là private static đang hoạt động tốt.Biến tĩnh riêng tư trong lớp php

Nhưng IDE của tôi (PHPstorm) được búng lên một cảnh báo lỗi cấp với Member has private access khi tôi truy cập chúng thông qua self::$ci->...

tôi tự hỏi nếu điều này là một lỗi trong IDE, làm nổi bật bởi vì nó có thể là một lỗi (aka nó tĩnh nhưng không có gì bên ngoài lớp có thể truy cập nó, tại sao bạn muốn làm điều đó?), hoặc bởi vì thực sự có cái gì đó sai về cú pháp với nó?

Như một ví dụ ở đây là một phần của lớp, Lưu ý rằng =& get_instance(); trả về một tham chiếu đến 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

Cần xem mã cụ thể hơn tôi giả sử (mặc dù 'self :: $ ci->' vẽ đủ ảnh), nhưng tôi đoán đó chỉ là hành vi kỳ lạ của PHPStorm. –

+0

@MichaelBerkowski có thêm mã vẽ một bức tranh đẹp hơn không? – Hailwood

+0

Có thể nó hoạt động theo cách đó bởi vì bạn gọi 'tự' trong một phương pháp không tĩnh? –

Trả lời

4

Trong phương pháp product() của bạn, bạn đang cố gắng truy cập vào các thành viên tin self::$ci. IDE của bạn cho rằng phương pháp này có thể được truy cập ở bất kỳ đâu và phát hiện xung đột với thành viên riêng tư tĩnh $ci.

Các vấn đề liên quan