文字列を使用した PHP での動的インスタンスの作成
PHP では、次を使用してクラスのインスタンスを作成する必要がある場合があります。複数のクラスから選択するために長い switch ステートメントを使用する代わりに、文字列を使用します。たとえば、次の 2 つのクラスがあるとします。
class ClassOne {} class ClassTwo {}
そして、「One」または「Two」のいずれかの文字列を受け取ります。
switch ($str) { case "One": return new ClassOne(); case "Two": return new ClassTwo(); }
のような switch ステートメントを使用する代わりに、次のコードを使用してインスタンスを動的に作成できます。
$str = 'One'; $class = 'Class'.$str; $object = new $class();
$class 変数は、文字列 'Class を連結することによって動的に構築されます。 ' $str の値を使用します。次に、new 演算子を使用して、そのクラスのインスタンスを作成します。この手法を使用すると、文字列入力に基づいてクラスのインスタンスを動的に作成できます。
完全修飾クラス名を指定することで、名前空間でも同じアプローチを使用できます。
$class = '\Foo\Bar\MyClass'; $instance = new $class();
さらに、PHP次の構文を使用した変数関数とメソッドの動的呼び出しをサポートしています:
$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 で文字列を使用してクラス インスタンスを動的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。