根据字符串动态创建PHP对象
我想基于由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属性定义的类型的对象
但是没有办法动态地基于字符串创建类型。如何做到这一点?
回答:
但是没有办法动态地基于字符串创建类型。如何做到这一点?
您可以轻松自然地做到这一点:
$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;
}
以上是 根据字符串动态创建PHP对象 的全部内容, 来源链接: utcz.com/qa/423801.html