Nedenini bilmiyorum ama benim kodunda yeni operatörünü kullanarak sevmiyorum.
Statik olarak adlandırılan bir sınıf örneğini oluşturmak için statik bir işlev.
Şimdi
Eğer argümanları ve bunun bir değişken sayısı ile init() yöntemini çağırabilirsiniz ... yeni \ ReflectionClass:
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
}
}
Bir sen şöyle ReflectionClass kaçmak için gereken ad içine kullanıyorsanız onu yapıcıya iletecek ve sizin için bir nesne döndürecektir. Yeni
echo (new ClassName('arg1', 'arg2', 'arg3'))->method1()->method2();
Statik çağrısı kullanarak yeni
$obj = new ClassName('arg1', 'arg2', 'arg3');
echo $obj->method1()->method2();
Inline yolu kullanarak
Normal yolu yerine yeni
echo ClassName::init('arg1', 'arg2', 'arg3')->method1()->method2();
arasında init kullanarak yerine yeni
echo ClassName::initArray(['arg1', 'arg2', 'arg3'])->method1()->method2();
statik yöntemleri hakkında güzel bir şey arasında initArray kullanılarak
Statik çağrı Böyle yapıcı argüman doğrulama olarak init yöntemlerinde bazı ön inşaat işlemleri çalıştırmak olabilir.
yansıması akla geliyor – Esailija