我想基于由MySQL数据库中的字符串定义的类型在PHP中创建一个对象。数据库表具有以下列和样本数据:
id | type | propertyVal ----+------+------------- 1 | foo | lorum 2 | bar | ipsum
…使用PHP数据类型
class ParentClass {...} class Foo extends ParentClass {private $id, $propertyVal; ...} class Bar extends ParentClass {private $id, $propertyVal; ...} //...(more classes)...
我只想使用一个查询,通过ID选择一行,然后创建一个类型为Object的对象,该对象定义表的type列,并将SELECTed行中的其他列分配给新创建的对象。
我当时在想使用:
mysql_fetch_object()
但是没有办法动态地基于字符串创建类型。如何做到这一点?
您可以轻松自然地做到这一点:
$type = 'myclass'; $instance = new $type;
如果您的查询返回的是关联数组,则可以使用类似的语法分配属性:
// 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; }