在我的ZF項目中,我有一個模型,它必須解決存儲在Zend_Registry中的大型數組。數組從緩存(而不是從數據庫)進入註冊表。請求期間,模型的不同方法可以多次使用該數組。銘記最佳實踐和優化的性能,我不知道我是否應該:是否需要在模型中保存數據以用於方法?
- 應用的專用屬性,用於和使用它的某種緩存
- 的每次只需從註冊表獲得陣列。專用財產
例子:
class Application_Model_Category {
...
public function methodOne() {
foreach (Zend_Registry::get('tree') as $category) {
...
}
}
public function methodTwo() {
$tree = Zend_Registry::get('tree');
foreach ($tree as $category) {
...
$count = count($tree);
}
}
...
}
做這些方法必須在所有(如內存或CPU使用率)的任何差異:從註冊表,每次得到的
class Application_Model_Category {
private $_tree = null;
...
public function _getTree() {
if (!$this->_tree) {
$this->_tree = Zend_Registry::get('tree');
}
return $this->_tree;
...
public function methodOne() {
foreach ($this->_getTree() as $category) {
...
}
}
public function methodTwo() {
$tree = $this->_getTree();
foreach ($tree as $category) {
...
$count = count($tree);
}
}
...
}
實例?或者是第一種方法看起來更好看?
當我寫完這個問題時 - 使用第一種方法幾乎變得很明顯。但你給了一個堅定的理由,謝謝! – yentsun