Tôi không biết tại sao nhưng tôi không thích sử dụng các nhà điều hành mới trong mã của tôi.
Đây là một hàm tĩnh để tạo một thể hiện của một lớp được gọi là tĩnh.
class ClassName {
public static function init(){
return (new ReflectionClass(get_called_class()))->newInstanceArgs(func_get_args());
}
public static function initArray($array=[]){
return (new ReflectionClass(get_called_class()))->newInstanceArgs($array);
}
public function __construct($arg1, $arg2, $arg3){
///construction code
}
}
Nếu bạn đang sử dụng nó bên trong một không gian tên bạn cần phải thoát khỏi ReflectionClass như vậy: ReflectionClass \ mới ...
Bây giờ bạn có thể gọi phương thức với một số biến của tham số và nó init() sẽ chuyển nó cho hàm tạo và trả về một đối tượng cho bạn.
Cách bình thường sử dụng mới
$obj = new ClassName('arg1', 'arg2', 'arg3');
echo $obj->method1()->method2();
Inline cách sử dụng mới
echo (new ClassName('arg1', 'arg2', 'arg3'))->method1()->method2();
gọi tĩnh nhờ sủ dụng init thay vì mới
echo ClassName::init('arg1', 'arg2', 'arg3')->method1()->method2();
gọi tĩnh sử dụng initArray thay vì mới
echo ClassName::initArray(['arg1', 'arg2', 'arg3'])->method1()->method2();
Những điều tốt đẹp về các phương pháp tĩnh là bạn có thể chạy một số hoạt động xây dựng trước trong các phương pháp init như xác nhận lập luận constructor.
Nguồn
2014-03-27 09:39:00
phản ánh suy nghĩ – Esailija