Từ PHP mannual đoạn thứ hai, nó nói rằng:PHP cuối tĩnh ràng buộc phạm vi nhầm lẫn
static:: introduces its scope.
Tôi đã thử các ví dụ sau đây cho phù hợp:
class Father {
public function test(){
echo static::$a;
}
}
class Son extends Father{
protected static $a='static forward scope';
public function test(){
parent::test();
}
}
$son = new Son();
$son->test(); // print "static forward scope"
Nó hoạt động như mô tả. Tuy nhiên, ví dụ sau sẽ gây ra lỗi nghiêm trọng:
class Father {
public function test(){
echo static::$a;
}
}
class Son extends Father{
private static $a='static forward scope';
public function test(){
parent::test();
}
}
// print "Fatal erro: Cannot access private property Son::$a"
$son = new Son();
$son->test();
Câu hỏi chính của tôi là cách diễn giải từ scope
tại đây? Nếu static
giới thiệu phạm vi của Son
tới Father
thì tại sao biến riêng tư vẫn ẩn với Father
?
Có hai điều kiện variable
phạm vi và visibility
phạm vi? Tôi mới PHP xin lỗi nếu điều này nghe có vẻ buồn cười.
Bạn đã đọc https://stackoverflow.com/questions/1912902/what-exactly-are-late-static-bindings-in-php này chưa? –
Mặc dù thuộc tính 'giới thiệu phạm vi' riêng tư không hiển thị với bất kỳ lớp nào khác. –
@ ponury-kostek tks để tham khảo. Tôi đọc nó. Nhưng tôi nghĩ câu hỏi của tôi khác với câu hỏi đó. – spacegoing