Can we dynamically create and initialize an object in PHP? This is the normal code:
class MyClass{
var $var1 = null;
var $var2 = null;
.
.
public function __construct($args){
foreach($args as $key => $value)
$this->$key = $value;
}
}
---------------------
$args = ($_SERVER['REQUEST_METHOD'] == "POST") ? $_POST : $_REQUEST;
$obj = new MyClass($args);
The above code works fine. Please note that the names of REQUEST parameters are accurately mapped with the members of class MyClass.
But can we do something like this:
$class = "MyClass";
$obj = new $class;
If we can do like this, then can we initialize $obj by using $args.
According to this post, $obj = $class should work. But it does not work for me. I tried get_class_vars($obj). It threw an exception.
Thanks
You can use Reflection to instanciate an object with parameters.
See Reflection on php manual.
It's more a comment, but I leave it here more prominently:
This does work. See
new
Docs.You have to overload some other magic methods:
Please see this codepad to see your code rewritten to work with what you want: