クラスが 2 つあります。class ClassOne { }
またはのclass ClassTwo {}
いずれかになる文字列を取得しています。"One"
"Two"
switch
次のような長い文を使用する代わりに、
switch ($str) {
case "One":
return new ClassOne();
case "Two":
return new ClassTwo();
}
文字列を使用してインスタンスを作成する方法はありますかnew Class("Class" . $str);
?
ベストアンサー1
はい、できます!
$str = 'One';
$class = 'Class'.$str;
$object = new $class();
名前空間を使用する場合は、完全修飾名:
$class = '\Foo\Bar\MyClass';
$instance = new $class();
変数関数とメソッドを動的に呼び出すこともできます。
$func = 'my_function';
$parameters = ['param2', 'param2'];
$func(...$parameters); // calls my_function() with 2 parameters;
$method = 'doStuff';
$object = new MyClass();
$object->$method(); // calls the MyClass->doStuff() method.
// or in one call
(new MyClass())->$method();
またPHPは文字列を持つ変数も同様ですが、これは本当に悪い習慣なので、可能な限り避けるべきです。代わりに配列を使用することを検討してください。