Khi tiêu đề cho biết, tôi muốn tạo một thể hiện của một lớp từ bên trong một phương thức tĩnh của cùng một lớp. Tôi đã tìm ra cho đến nay là tôi có thể làm như thế này:Tạo thể hiện lớp từ bên trong phương thức tĩnh
class Foo{
public $val;
public static function bar($val){
$inst = new Foo;
$inst->val = $val;
return $inst;
}
}
Do đó cho phép tôi làm điều này.
$obj = Foo::bar("some variable");
Điều này thật tuyệt.
Vì vậy, bây giờ là câu hỏi. Có cách nào dễ dàng hơn để làm điều này mà tôi không biết, hoặc bất kỳ phím tắt nào để đạt được kết quả tương tự? Có bất kỳ ưu điểm hay nhược điểm nào khi tạo một cá thể trong thời trang này không?
Cảm ơn.
lý do của bạn làm nó theo cách này là gì? Tại sao không sử dụng đồng bằng '$ obj = new Foo (" một số biến ");'? –
Điều đó không có ý nghĩa với tôi để tạo ra thứ gì đó với hàm tạo đã được tạo ra ở một thời điểm nào đó. Ví dụ, trong một dự án hiện tại, tôi sử dụng Profile :: get() để tải trong một hồ sơ có (tại một số điểm) đã được "xây dựng". Có lẽ tôi đang lạm dụng các nhà xây dựng hoặc sử dụng điều này như là một câu trả lời cho quá tải. – daniel