2011-06-15 4 views
0

У меня самое странное время со следующим кодом 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 приходит.

+0

что произойдет, если вы 'var_dump ($ всего),' в качестве первой линии после еще { – preinheimer

+0

у вас есть код запах ... У вас есть дубликат код в 'если 'и в' else'. Код из '$$ controller = new $ controller;' должен быть внешним (в конце) оператором 'if' –

+0

Фактически' if' должен определять переменные переменной '$ controller' и' $ method' –

ответ

0

У вас есть тот же оператор require_once как в блоках «if», так и «else».

+1

значение $ controller отличается – preinheimer

+0

Этот ответ слишком ошибочен, если только $ uri-> segment (1) == 'index' (: –

+0

Ha - крики. Я должен внимательно прочитать ... – kpesanka

Смежные вопросы