tôi đang tìm kiếm vào vấn đề này bởi vì lớp được dựa trên một ngữ cảnh nhất định phải được đưa ra. Vì vậy, tôi đã thực hiện một chức năng trong lớp học của tôi rằng sẽ trả lại lớp học mà bạn yêu cầu như vậy:
/**
* Instantiate a class by class name in variable
*
* @param string $className The name of the class
* @return mixed The instantiated class
*/
protected function getClass($className)
{
return new $className;
}
Vì vậy, bạn có thể gọi nó bằng cách sử dụng $class = new $this->getClass(static::CLASSNAME);
khi bạn định nghĩa một hằng số trong lớp hiện tại chứa tên của lớp bạn muốn khởi tạo. Trong trường hợp của bạn, bạn có thể sử dụng nó mà không có 'static::
' hoặc với bất kỳ biến nào bạn muốn sử dụng. Đừng quên thực hiện một số xử lý lỗi.
Câu hỏi hay. Hmm. – Prash
Có lẽ nếu bạn nói những gì bạn thực sự muốn làm, có thể có một số cách thay thế tốt hơn. Đây có thể là [Vấn đề XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –