Dynamic Class Instantiation with Strings in PHP
In PHP, it is possible to create an instance of a class using a string representing the class name. This eliminates the need for lengthy switch statements when dealing with multiple classes.
Consider the following example:
class ClassOne {} class ClassTwo {} $str = 'One';
Rather than using a switch statement:
switch ($str) { case "One": $object = new ClassOne(); break; case "Two": $object = new ClassTwo(); break; }
You can dynamically create an instance using a string as follows:
$class = 'Class' . $str; $object = new $class();
This syntax constructs the full class name (e.g., "ClassOne") and instantiates it. If your classes are in namespaces, use the fully qualified name:
$class = '\Foo\Bar\MyClass'; $instance = new $class();
PHP extends this capability to variable functions and methods as well:
$func = 'my_function'; $func(...$parameters); // Calls my_function() with parameters $method = 'doStuff'; $object = new MyClass(); $object->$method(); // Calls Myclass->doStuff() (new MyClass())->$method(); // Calls Myclass->doStuff() in one line
While you can create variables with strings, it is considered bad practice and should be avoided in favor of using arrays.
The above is the detailed content of How Can I Instantiate PHP Classes Dynamically Using Strings?. For more information, please follow other related articles on the PHP Chinese website!