У меня самое странное время со следующим кодом PHP. Require_once работает в инструкции else, даже если оператор if истинен. Также странно, что $ controller в выражении else получает значение «application». Нет другого кода, связанного со значением, отличным от $ total.PHP пытается запустить require_once, хотя он не должен
$total = $uri->total();
if($total == 0) {
//Home Page Controller
$controller = 'index';
$method = false;
} else {
$controller = $uri->segment(1); //value is "account"
if($uri->segment(2) !== false) {
$method = $uri->segment(2); //value is "login"
} else {
$method = false;
}
}
require_once(APPPATH.'controllers/'.$controller.EXT);
$$controller = new $controller;
if($method != false) {
$$controller->$method();
} else {
$$controller->index();
}
Edit: я установил двойной код, так что тот же код не вызывается дважды либо если либо еще. Когда я запускаю это, код работает, но я получаю сообщение об ошибке в строке, где require_once: не удается найти application.php
Это странно, потому что require_once уже загружает правильный класс, но я получаю сообщение об ошибке он не может найти нужный файл. Что может заставить его загружаться дважды? Я проверил, чтобы убедиться, что файл, на котором находится этот PHP, не загружается дважды.
Это весь код, я работаю с исключением класса URI найденного здесь: https://github.com/chrisabrams/PHP-URI-Class
Я не уверен, где application.php приходит.
что произойдет, если вы 'var_dump ($ всего),' в качестве первой линии после еще { – preinheimer
у вас есть код запах ... У вас есть дубликат код в 'если 'и в' else'. Код из '$$ controller = new $ controller;' должен быть внешним (в конце) оператором 'if' –
Фактически' if' должен определять переменные переменной '$ controller' и' $ method' –