Tôi có một lớp học với một chức năng nhà máy-pattern trong đó:lớp con instantiating từ lớp cha (PHP)
abstract class ParentObj {
public function __construct(){ ... }
public static function factory(){
//returns new instance
}
}
Tôi cần em để có thể gọi hàm nhà máy và trả về một thể hiện của sự kêu gọi class: $child = Child::factory();
và tốt nhất là không ghi đè hàm nhà máy trong lớp con.
Tôi đã thử nhiều cách khác nhau để đạt được điều này không có kết quả. Tôi muốn tránh xa các giải pháp sử dụng phản chiếu, như __CLASS__
.
(Tôi đang sử dụng PHP 5.2.5 nếu vấn đề)
Tôi đang chơi với RC4 vào phút vì vậy tôi sẽ cố gắng một số mã trong thời gian ngắn nếu không có ai khác bước lên trong khi chờ đợi ... –
LSB dường là giải pháp tốt nhất mà tôi có thể tự tìm thấy. Cho đến khi tôi nâng cấp, tốt nhất tôi có thể đưa ra là chuyển tên con cho nhà máy() hoặc xác định tên là tài sản và lấy tên từ nhà máy() –
Theo hướng dẫn sử dụng PHP, có một hàm gọi là ' get_called_class() 'hoạt động giống như' __CLASS__' http://us.php.net/manual/en/function.get-called-class.php –