Tôi có một lớp cơ sở mà tôi cần gọi các hàm trên một lớp được tham chiếu trong lớp con.Truy cập các biến tĩnh lớp con từ lớp cha?
Dễ dàng đủ,
class base_class {
public function doSomethingWithReference(){
$this->reference->doSomething();
}
}
class extended_class extends base_class{
protected $reference;
public function __construct($ref){
$this->reference = $ref;
}
}
Bây giờ làm việc này tốt rõ ràng,
Nhưng, khi tôi gỡ lỗi tôi không quan tâm đến giá trị của $this->reference
Tuy nhiên, đối tượng mà $this->reference
đề cập đến là rất lớn!
vì vậy, khi tôi làm print_r($instanceOfExtendedClass)
Tôi lấy bản in ra khỏi đối tượng đó.
Giờ tham chiếu khác nhau đối với mỗi lớp mở rộng base_class
.
Điều tôi muốn làm chỉ là đặt reference
làm thuộc tính tĩnh trên lớp extended_class
.
Nhưng, sau đó thay đổi doSomethingWithReference
thành self::$reference
ném lỗi biến không xác định.
Và ngược lại, đặt biến tĩnh trong base_class
và sửa đổi nó từ extended_class
không hoạt động vì nó thay đổi biến cho tất cả mọi thứ kéo dài từ lớp đó.
Có cách nào để làm điều này vì vậy tôi không nhận được bản in ra khỏi $this->reference
?
Bạn đang làm việc với phiên bản PHP nào? Có một số thay đổi [* lớn * đối với hành vi 'tĩnh' trong 5.3] (http://php.net/language.oop5.late-static-bindings), và biết nếu bạn bị mắc kẹt trên thứ gì đó cũ hơn sẽ cung cấp cho bạn một câu trả lời rất khác. – Charles
Phiên bản PHP 5.3 – Hailwood
Cấu trúc lớp này vi phạm điều gì đó, tôi không chắc nó là gì :) –