当前位置: 首页 > 面试题库 >

根据字符串动态创建PHP对象

融唯
2023-03-14
问题内容

我想基于由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;
}


 类似资料:
  • 问题内容: 是否有任何使用Spring或java替换模板字符串以及值的API。 例如: 其中参数(,)中的形式。 问题答案: 我最喜欢的模板引擎是Apache Velocity 也可以与Spring很好地集成,此处有介绍性文章

  • 问题内容: 我有以下JSON数据: 假设我不知道我有多少列员工,如何在JavaScript中创建该对象(没有连接字符串)?假设我使用“ onGeneratedRow”方法获取每一行,并且需要将每一列(firstName,lastName)推到“ {}”括号中。 问题答案: 这就是您所需要的!

  • 我是thymeleaf新手,我想使用thymeleaf url创建动态查询字符串。对于分页,我在所有页面中使用公共片段和include片段。在所有页面中都有搜索选项,还需要分页进行搜索。所以,我们需要在搜索条件的分页中传递动态查询字符串。但是当我创建动态查询字符串时,URL会对特殊字符进行编码,如和

  • 问题内容: 我有从外部应用程序获取数据的Java应用程序。传入的JSON以字符串形式。我想解析该Strings并创建BSON对象。 不幸的是,我在Java的BSON实现中找不到用于此的API。 我是否像GSON这样使用了外部解析器? 问题答案: 最简单的方法似乎是使用JSON库将JSON字符串解析为,然后使用方法将这些值放入。

  • 问题内容: 问题:有没有办法使用字符串在python中 创建函数对象 ? 信息:我正在一个项目中,该项目将数据存储在sqlite3服务器后端中。没什么可疯狂的。DAL类通常是通过代码生成来完成的,因为代码是如此平凡。但这给了我一个主意。在python中找不到属性时,如果定义函数,它将在错误之前调用该函数。因此,我通过解析器和逻辑树来计算它的方式可以动态生成第一次调用时所需的代码,然后将函数对象另存

  • 问题内容: 我有两个课,和。我得到的字符串可以是或。 而不是使用长语句,例如: 有没有一种方法可以使用字符串创建实例,即? 问题答案: 是的你可以! 使用名称空间时,请提供标准名称: 您可以在php中执行的其他一些很酷的工作是: 以及可变的函数和方法。