【发布时间】:2022-08-02 16:49:58
【问题描述】:
我有一个工单表(xxx.xxx 条目)和一个分类表(大约 1000 个条目的表)和一个简单的类。
class Classification {
private $id;
private $name;
/* getter */
function __construct($id) {
$item = GET_FROM_DATABASE($id);
$this->id = $item[\"id\"];
$this->name = recursiveDatabaseLookup() /* recursive method to get its parents - For example tree -> branch -> leaf */;
}
}
如果我加载脚本并加载包括分类在内的 10000 张票,我目前从数据库中获取每张票的分类数据,通常是相同的。
将已加载的数据保存在静态变量中是个好主意吗? 例如像这样:
class Classification {
private $id;
private $name;
/* getter */
private static $alreadyLoadedItems = [];
function __construct($id) {
if(count(self::$alreadyLoadedItems) > 0 && isset(self::$alreadyLoadedItems[$id])) {
/* get data from static var */
$this->id = self::$alreadyLoadedItems[$id][\"id\"];
$this->name = self::$alreadyLoadedItems[$id][\"name\"];
} else {
$item = GET_FROM_DATABASE($id);
$this->id = $item[\"id\"];
$this->name = recursiveDatabaseLookup() /* recursive method to get its parents - For example tree -> branch -> leaf */;
}
}
}
或者,还有更好的方法?分类的例子只有一个,我的项目中有很多类似的类。 (机票类别、客户数据等..)
-
我对一些数据库项目使用类似的技术,比如货币信息,当很明显相同的信息将被多次请求并且不会改变时。在你的情况下是否合适,我不能说。
标签: php mysqli datamapper