Dynamically create PHP object based on string Dynamically create PHP object based on string php php

Dynamically create PHP object based on string


But know of no way to dynamically create a type based on a string. How does one do this?

You can do it quite easily and naturally:

$type = 'myclass';$instance = new $type;

If your query is returning an associative array, you can assign properties using similar syntax:

// build object$type = $row['type'];$instance = new $type;// remove 'type' so we don't set $instance->type = 'foo' or 'bar'unset($row['type']);  // assign propertiesforeach ($row as $property => $value) {   $instance->$property = $value;}


There's a very neat syntax you can use that I learned about a couple of months ago that does not rely on a temporary variable. Here's an example where I use a POST variable to load a specific class:

$eb = new ${!${''} = $_POST['entity'] . 'Binding'}();

In your specific case though, you would be able to solve it by using PDO. It has a fetch mode that allows the first column's value to be the class the row instantiates into.

$sth->fetch(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE);


$instance = new $classname; // i.e. $type in your case

Works very well...