根据字符串动态创建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行中的其他列分配给新创建的对象。

我当时在想使用:

  1. mysql_fetch_object()
  2. 读取类型属性
  3. 创建具有由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

回到顶部