Dynamically create PHP object based on string
casting, mysql, oop, php
Solution
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 properties
foreach ($row as $property => $value) {
$instance->$property = $value;
}
Problem
I would like to create an object in PHP based on a type defined by a string in a MySQL database. The database table has columns and sample data of: ``` id | type | propertyVal ----+------+------------- 1 | foo | lorum 2 | bar | ipsum ``` ...with PHP data types ``` class ParentClass {...} class Foo extends ParentClass {private $id, $propertyVal; ...} class Bar extends ParentClass {private $id, $propertyVal; ...} //...(more classes)... ``` Using only one query, I would like to SELECT a row by id and create an object of the type define the table's type column with other columns in the SELECTed row being assigned to the newly created object. I was thinking that using: - `mysql_fetch_object()` - Reading the type attribute - Creating an object with type defined by type attribute But know of no way to dynamically create a type based on a string. How does one do this?