在我的一个extbase模型中,我想初始化从数据库中保存的属性派生的一些属性。这些虚拟属性的计算非常耗时,因此我想缓存它们。因此,我的程序流应该看起来像这样:
我首先想到了方法" initializeObject"是我需要的,但它不是:它是在从数据库初始化任何属性之前调用的。所以我提出了另外两种方法:
find*
方法添加到通用存储库,则会中断。我的问题是:
是否有默认/最佳实践如何做我想做的事?
答案 0 :(得分:1)
如果从磁盘或数据库中读取最终值的计算量较小,则使用TYPO3 caching framework或您自己的静态类缓存方法存储该值,并将其还原到虚拟属性的getter中。在getter方法public mixed getYourPropery()
中执行此操作将为您提供仅在调用时从缓存中获取值的功能。
在第二个电话中,只返回您之前存储的值:
private $myValue = NULL;
public function getMyValue() {
if($this->myValue != NULL) return $this->myValue;
$this->myValue = "test";
return $this->myValue;
}