Ich weiß nicht, warum, aber Ich mag nicht die neuen Betreiber in meinem Code.
Hier ist eine statische Funktion zum Erstellen einer Instanz einer Klasse namens statisch.
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
}
}
Wenn Sie es in einem Namespace Sie Reflection wie so entkommen müssen verwenden: neue \ Reflection ...
Jetzt können Sie die Methode init() mit einer variablen Anzahl von Argumenten aufrufen und wird es an den Konstruktor übergeben und ein Objekt für Sie zurückgeben.
Normalweg neue
$obj = new ClassName('arg1', 'arg2', 'arg3');
echo $obj->method1()->method2();
Inline Art und Weise mit neuen
echo (new ClassName('arg1', 'arg2', 'arg3'))->method1()->method2();
statischen Aufruf statt neuer
echo ClassName::init('arg1', 'arg2', 'arg3')->method1()->method2();
using init
statischen Aufruf initarray statt neuer
echo ClassName::initArray(['arg1', 'arg2', 'arg3'])->method1()->method2();
Die nette Sache über die statischen Methoden ist, dass Sie einige Pre Baubetrieb in den init Methoden wie Konstruktorargument Validierung ausgeführt werden können.
Reflexion kommt in den Sinn – Esailija