Хорошо здесь метод я использую для инициализации модели в моих действиях контроллера:Почему класс получает повторное оформление несколько раз?
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];
}
Затем, когда я вызываю метод _getTable() два раза (например, один раз в методе Init() и один раз в действии контроллера) печатает:
test test test test test test
В верхней части страницы. Не следует ли просто вернуть объект из массива _tables() из-за проверки array_key_exists()? Другими словами, не должна ли часть внутри функции array_key_exists() выполняться только один раз, когда метод вызывается несколько раз?
UPDATE:
Таким образом, проблема заключается в следующем - по какой-то причине расположение получает в два раза печатается (так это расположение печатных и внутри макета, где есть макет() -> содержание;> он снова печатает макет?). Я понятия не имею, почему он делает это, так как он хорошо работает на предыдущем сервере, а также на локальном хосте.
Вы уверены, что ваши переменные/свойства содержат то, что вы ожидаете от них? Что вы получите, если добавить что-то вроде 'var_dump ($ table, $ this -> _ tables);' в начале вашего метода '_getTable'? –
Вы также можете заменить «echo» test '; 'на' echo' testing {$ table}. ";' - возможно, вы звоните в другое место, о котором вы забыли. – thetaiko
Когда я var_dump массив _tables, он выглядит так, как должен, нет повторяющихся записей. –