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;
}
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. –
@MichaelBerkowski có thêm mã vẽ một bức tranh đẹp hơn không? – Hailwood
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? –