確定這裏是我用我的控制器操作初始化模型的方法:爲什麼類會多次重新聲明?
protected $_tables = array();
protected function _getTable($table)
{
if (false === array_key_exists($table, $this->_tables)) {
include APPLICATION_PATH . '/modules/'
. $this->_request->getModuleName() . '/models/' . $table . '.php';
$this->_tables[$table] = new $table();
echo 'test ';
}
return $this->_tables[$table];
}
然後當我在控制器動作曾經在init()方法調用_getTable()方法兩次(例如,一旦)它打印:
test test test test test test
在頁面頂部。不應該因爲array_key_exists()檢查而從_tables array()返回對象嗎?換句話說,當方法被多次調用時,array_key_exists()函數中的部分不應該只執行一次嗎?
UPDATE:
所以,問題是這樣的 - 由於某種原因,佈局被打印兩次(所以它的佈局打印,那裏是佈局()裏面的佈置 - >含量>再次打印佈局? )。我不知道爲什麼它這樣做,因爲它在以前的服務器上以及在本地主機上運行良好。
你確定你的變量/屬性包含你所期望的嗎?如果你在'_getTable'方法的開頭添加了'var_dump($ table,$ this - > _ tables)'',你會得到什麼? – 2010-02-22 21:16:54
您也可以將'echo'test';'替換爲'echo'測試{$ table}。「;' - 也許您會在別的地方將它稱爲您忘記的地方。 – thetaiko 2010-02-22 21:21:49
當我var_dump _tables數組看起來應該是,沒有重複的條目。 – 2010-02-22 21:32:41