ホームページ > バックエンド開発 > PHPチュートリアル > PHP で文字列を使用してクラス インスタンスを動的に作成するにはどうすればよいですか?

PHP で文字列を使用してクラス インスタンスを動的に作成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-27 05:57:11
オリジナル
590 人が閲覧しました

How Can I Dynamically Create Class Instances in PHP Using a String?

文字列を使用した 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート