确定这里是我用我的控制器操作初始化模型的方法:为什么类会多次重新声明?
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