Вопрос Есть тут гуру PHP которые знают толк в переборах массивов? (вопрос внутри)

Регистрация
17 Ноя 2013
Сообщения
74
Репутация
0
Спасибо
0
Монет
0
Есть условный массив, в котором есть название функции и ссылка для запуска.
Логика работы.
Заходим на сайт, на главную, открывается главная.
Дописываем /login, бросает на login.
Дописываем в конце абаркадабру и видим ошибку 404.
Как сделать такое? Кусок кода вот:
public function display($routes) {
$path = $this->getRequestPath();
$callf = new RouterPaths();
foreach ($routes as $key => $value) {
//if ($path === $value) {
if ($routes[$key] == $path) {
if (method_exists($callf, $key)) {
$callf->$key();
} else {
echo 'ERROR: Фатальная ошибка, не найдена функция, выход.';
exit;
}
}
}
}

Я никак не могу прикрутить сюда функцию ошибки, foreach всё перебирает, и в итоге если я добавляю в любом условии else, elseif то дописывается 404 в конце, либо ничего не открывается (везде наоборот 404) кроме главной, а на главной в конце 404...
Сейчас в этом коде нет обработки линка, ну или пути, который не определён в массиве и у него нет функции.
 
Это MVC. Например, у меня при http:// name/posts/2 будет выведена 404 или, если пост есть, его контент и т. п. Почитав твои комментарии под ответами я понял, что ты пишешь маршрутизатор, т. е. работаешь с MVC, например мой роутер (github.com/Pavel122/solar-framework/blob/master/vendor/core/Router.php) работает благодаря двум правилам htaccess, которые перенаправляют всё в public/index.php, где анализируются данные и подгружается соответствующий контент. Твой код подправить не могу, ибо понятия не имею, как выглядит класс RouterPaths и всё такое. Залей свой код на гитхаб.
 
...Дописываем /login и это уже не php, а сам web-сервер ищет подпапку login и пытается ее показать. То, что вы хотите достичь, реализуется: - либо указанием директив самому web-серверу; - либо созданием подпапки login, а в ней скрипт, который кидает на вход в админку; - либо видоизменением ссылки: посылать не на site.tld/login, а на site.tld?action=login, в этом случае все возможные (и невозможные) ссылки будут обрабатываться одним вашим обработчиком, где вы будете проверять, а не равно ли $_GET["action"] значению "login"? и если равно, то посылать в админку, а если не равно, посылать на сайт Диснея или на 404. Второй вариант хорош тем, что все не "/login" сами будут автоматом 404. Но есть и минусы, скриптов будет более одного, их надо будет согласовывать и отлаживать совместно.
 
тамилиразныепотрараввызновызкрыногвьяныхмисокисамигагныйеприпро Цо сом робишь? Цо впхашь? Грузд опан смердяка. Ми болит на х О чем там? суць интай в цвай зизу
 
Назад
Сверху