我在搜索相关帖子后阅读了这篇文章。
我有一个略有不同但相关的问题。
有没有没有 EVAL() 的方法(因为这是一个坏主意 - 如果有人允许用户提供在 eval 中使用的值等),这样您就可以定义类的结构,例如:
if(!class_exists($className) && dao::tableExists($className)) {
class $className extends daoObject {
public function __construct($uid) {
parent::__construct($uid);
}
}
dao::generateClass($className);
}
这样做的原因是,当新的核心表被添加到框架时,它们可以与通用数据访问对象一起用于访问相应的字段(通过父级中的 __call、添加/插入和更新/删除的 getter/setter)为每个类编写一个类,而不需要编码人员编写一个类,然后必须检查它或为各种类型的表编写自定义代码生成器。daoObject 为我完成了这一切。
目的是使用这种方法来定义一个类,如果它不存在,然后将类定义写入文件。
如果对应的表名不存在,则会失败。如果该类存在(例如,下次运行时),则不会定义它。如果它不存在但是是一个表名,您可以在第一次调用它时创建、使用并保存它,这将在插入新表并运行脚本以插入数据时发生。作者将仅通过 csv 定义表字段和示例数据。该脚本将生成类并一键导入数据。我可以将定义写入文件,然后包含它,这似乎可以工作,但我想在修改对象的属性之后这样做,这样我就不必两次写入文件来完成它工作。
这是简化的,但有可能吗?