Tôi cần một hàm tĩnh được thừa kế "gọi" để gọi một hàm tĩnh khác "bên trong" đã bị ghi đè. Tôi có thể làm điều này với ràng buộc tĩnh muộn, nhưng máy chủ của tôi không có php5.3 và vì vậy tôi cần phải làm việc xung quanh nó.Giả mạo ràng buộc tĩnh muộn trước php 5.3
class ClassA{
static function call()
{
return self::inner();
}
static function inner(){
return "Class A";
}
}
class ClassB extends ClassA{
static function inner(){
return "Class B";
}
}
echo "<p>Class A = " . ClassA::call();
echo "<p>Class B = " . ClassB::call();
Tôi muốn đầu ra là:
Class A = Class A
Class B = Class B
Nhưng những gì nó là:
Class A = Class A
Class B = Lớp A
Đường ruột của tôi nói với tôi rằng tôi có thể viết một thứ gì đó trong cuộc gọi() để phát hiện đối tượng nào được tham chiếu khi "call()" được gọi là. Vì vậy, thay vì tự :: inner() nó sẽ như vậy một cái gì đó dọc theo dòng của gọi là :: inner(). Phát hiện phiên bản bên trong thích hợp() để gọi từ cuộc gọi phương thức gốc.
Máy chủ của bạn có phải là FatCow không? Bây giờ là tháng 6 năm 2012 và họ vẫn chưa có PHP 5.3. -1 trên FatCow. – Ben