У меня есть обычное меню HTML, которое передает инструкцию GET в URL.
<li><a href="?Page=Home">Home</a></li>
Так же, как это, хотя это, конечно, всего 1 пункт всего меню. В отдельном файле у меня есть функция, которая проверяет, существует ли инструкция GET или POST, и если она существует и не является NULL, она возвращает значение туда, где оно было вызвано.
public function getFormVariable($value){ switch (strtoupper($_SERVER['REQUEST_METHOD'])) { case 'GET': if (isset($_GET[$value]) && $_GET[$value] != NULL) { return $_GET[$value]; } else{ return false; } break; case 'POST': if (isset($POST[$value]) && $POST[$value] != NULL) { return $POST[$value]; } else{ return false; } break; default: return false; } }
И со следующим кодом он получает значение get и находит класс, вызывающий коррозию (каждый класс находится в отдельном файле, а каждый класс – 1 ссылка в моем меню)
В этом классе есть только некоторые регулярные функции / данные, которые дают содержание этой страницы.
$class = loadClass($ConfigPage->getFormVariable('Page')); $ConfigPage->SetProperty('content', $class); function loadClass($Page){ $class_name = 'Content' . $Page; if(!class_exists($class_name)){ return 'Error: Content has not been found.'; } $class = new $class_name(); return $class; }
Объяснение: меню дает значение GET «Контакт», которое затем проверяется с помощью GetFormVariable (), и затем будет найден соответствующий класс, который возвращает содержимое этого класса.
Теперь мой вопрос: когда функция LoadClass () не может найти имя класса, которое было передано с помощью инструкции GET, она должна вернуть строку ошибки. Но этого не происходит. Я получаю красивую большую оранжевую ошибку от PHP, говорящую следующее:
Неустранимая ошибка: вызов функции-объекта-члена () для не-объекта в E: \ Program files \ wamp \ www \ BDW \ Class \ Html_Page.Class.php в строке 147
Строка 147 – это то, где объект называется
echo $ this-> content-> render ();
Функция Render – это то, что она говорит о нормальной функции возврата внутри классов содержимого. Почему я получаю эту ошибку и как ее исправить?
Второй вопрос. Если в URL-адресе нет инструкции GET. Это дает ту же ошибку. что довольно логично. Но как заставить его показывать ContentHome, когда в URL-адресе нет инструкции GET, и ERROR, когда значение инструкции GET неверно.
Спасибо за чтение. Если что-то неясно, скажите мне. Английский не мой родной язык, и в конце концов. Я здесь, чтобы учиться.
EDIT: Мое знание PHP не достаточно велико, поэтому я решил, что класс не может быть найден. он возвращает вас домой без ошибок. который я хотел в первую очередь.
Вот мой новый код, который все еще не работает, почему?
$class = loadClass($ConfigPage->getFormVariable('Page')); $ConfigPage->SetProperty('content', $class); function loadClass($Page){ $class_name = 'Content' . $Page; $Default_Class = 'ContentHome'; if(!class_exists($class_name)){ //echo 'Error: Content has not been found.'; $class = new $Default_Class(); return $class; } else{ $class = new $class_name(); return $class; } $ConfigPage->Render(); }