2012-09-24 58 views
10

Làm cách nào để bạn truy cập các thuộc tính của đối tượng PHP?Cú pháp để truy cập các thuộc tính đối tượng PHP là gì?

Ngoài ra, sự khác biệt giữa việc truy cập thuộc tính của đối tượng với $this->$property1 so với $this->property1 là gì?

Khi tôi cố gắng sử dụng $this->$property1 tôi nhận được lỗi sau:

'PHP: Cannot access empty property'.

PHP documentation trên thuộc tính đối tượng có một bình luận mà đề cập đến điều này, nhưng những nhận xét không thực sự giải thích trong chiều sâu.

+0

Hãy trang hướng dẫn này để thay thế và tìm kiếm "tên thuộc tính biến" phần: http://php.net/manual/en/language.variables.variable.php (phần đầu tiên cũng có thể thú vị cho bạn) (tìm thấy trên trang bạn đã liên kết trong câu trả lời của bạn, bạn nên đọc kỹ tài liệu) – hakre

+0

Bạn xuống với OOP? Vâng, bạn biết tôi –

Trả lời

6
  1. $property1 // biến cụ thể
  2. $this->property1 // thuộc tính cụ thể

Việc sử dụng chung trên lớp là không có "$" nếu không bạn đang kêu gọi một biến gọi là $property1 có thể lấy bất kỳ giá trị.

Ví dụ:

class X { 
    public $property1 = 'Value 1'; 
    public $property2 = 'Value 2'; 
} 
$property1 = 'property2'; //Name of attribute 2 
$x_object = new X(); 
echo $x_object->property1; //Return 'Value 1' 
echo $x_object->$property1; //Return 'Value 2' 
9

$this->property1 có nghĩa là:

sử dụng đối tượng và nhận được property1 biến ràng buộc để đối tượng

$this->$property1 này có nghĩa là:

đánh giá chuỗi $ property1 và sử dụng kết quả để có được những biến được đặt tên bởi $ kết quả property1 được liên kết với đối tượng này

+0

Một người dùng SO khác có thể biến trang hướng dẫn sử dụng PHP thành câu trả lời. Xin chúc mừng! – hakre

+0

Đó có phải là châm biếm không? –

+0

@hakra liên kết đến hướng dẫn thường không được coi là câu trả lời, vì các liên kết này có xu hướng thay đổi ... tuy nhiên, tôi đồng ý rằng trích dẫn và/hoặc liên kết tới nguồn sẽ là một biến thể đẹp hơn cho câu trả lời –

3

property1 là một chuỗi trong khi $property1 là một biến. Vì vậy, khi truy cập $this->$property1 PHP tìm nội dung của biến có tên là $property1 và bởi vì nó (có thể) không tồn tại, nó trống nên đó là lý do bạn gặp lỗi Cannot access empty property.

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