2010-03-09 43 views
19

Tôi có tên lớp được lưu trong biến $ classname; tôi cũng có một mảng các giá trị mà tôi nên truyền vào constructor của đối tượng.Cách tạo đối tượng mới bằng cách sử dụng tên lớp được lưu trữ trong biến và cách chuyển một biến khác vào hàm tạo của lớp này?

$classname = "MyClass"; 
$variables = array(1, 2, 3, 4); 

Tôi cần

$objInstance = new MyClass(1, 2, 3, 4); 

như thế nào?

Cảm ơn bạn.

Trả lời

39
$r = new ReflectionClass($classname); 
$objInstance = $r->newInstanceArgs($variables); 
+0

+ 1 Làm tốt lắm! Đã không suy nghĩ về Reflection - nhưng, một lần nữa, nó giúp làm những gì dường như không thể ;-) –

+0

Giải pháp tuyệt vời! Vì SPL chưa được ghi nhận tốt, đây là mô tả lớp PHP SPL Reflection http://www.tuxradar.com/practicalphp/16/4/0 – Kirzilla

4
$objInstance = new $classname($variables[0], $variables[1], $variables[2], $variables[3]); 
+3

Tôi đoán anh ta không muốn danh sách các thông số được mã hóa cứng như –

+0

này mặc dù tôi đang guesing này có thể là nhanh hơn phản xạ và do đó khá hữu ích trong một số trường hợp – Flion

Các vấn đề liên quan