Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Единая точка входа


Автор: systemIV 11.6.2011, 17:30
Привет.
Написал единую точку входа, и сейчас думаю как отображать посты. 
Вот что только полезло на ум.
Код

case "/read/post_$post_id": include $_SERVER['DOCUMENT_ROOT']."/view/read.php";
break;

Можете подсказать ещё идеи? Или эта прокатит?

Автор: Absinthe 11.6.2011, 17:47
Классы загружать через spl autoload.
Получать $module из запроса.
Получаем список доступных модулей $modules из конфига или наличия соответствующих файлов или наличия соответствующих классов или....
Выбираем и выполняем модуль:
Код

if (!in_array($module, $modules)) {
    $module = 'page404';
}
$response = new $module($request);

Автор: systemIV 11.6.2011, 17:47
Я просто хз, как отловить число, переданное через нижнее подчёркивание, можно через рег.выражения, можно черех сепаратор разделить строку, но это всё мутарно, может быть есь уже готовое решение?

Добавлено @ 17:50
нет, ты не понял. мне нужно поймать число переданое через нижнее подчёркивание и потом подставить запрос mysql. только как его отловить. вот весь скрипт, тут если вызвать просто /read то покажутся все посты, а если оно передано с числом, то вывести пост с тем же ИД что и переданое число.
Код

<?php
    switch( $_SERVER['REQUEST_URI']){
        case "/": include $_SERVER['DOCUMENT_ROOT']."/view/read.php";
        break;
        case "/read/post_333": include $_SERVER['DOCUMENT_ROOT']."/view/read.php?post_id=333";
        break;
        case "/admin": include $_SERVER['DOCUMENT_ROOT']."/view/admin.php";
        break;
        case "/create": include $_SERVER['DOCUMENT_ROOT']."/view/create.php";
        break;
        case "/update": include $_SERVER['DOCUMENT_ROOT']."/view/update.php";
        break;
        case "/delete": include $_SERVER['DOCUMENT_ROOT']."/view/delete.php";
        break;
        default: include $_SERVER['DOCUMENT_ROOT']."/view/404.php";
    }
?>



Добавлено через 4 минуты и 56 секунд
а вот как поймать это 333, я хз

Добавлено через 9 минут и 26 секунд
проблема решена

Автор: Sanchezzz 11.6.2011, 20:13
я бы сделал через mod_rewrite страницу  

/read/read/post_333        
и принимал нормально $_GET

в файл .htaccess
Код

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteRule ^/(.*)/post_(.*)/$ /index.php?view=$1&post_id=$2 [L] #  L - прекратить дальше проверять условия 
  RewriteRule ^/(.*)/$ /index.php?view=$1  [L]
</IfModule>


индекс пхп
Код

<?
switch( $_GET['view']){
  case 'read' : 
     include $_SERVER['DOCUMENT_ROOT']."/view/read.php"; // $_GET['post_id'] == 333
  break;

}
?>

Автор: systemIV 11.6.2011, 22:44
Щас пока не въехал, но идея нравится)
Я вообще сделал проверку на существование переменной в ГЕТ запросе, и если она есть, то показывать страницу, если нет, то список постов

Автор: MoLeX 14.6.2011, 06:39
systemIV, делай роутер. Принцип прост: есть файл настроек
Код

$router['admin'] = 'admin';
$router['delete'] = 'delete';
...

дальше проверяешь первую секцию урла http://site.local/delete/1 на соответствие и если оно есть то вызываешь этот контроллер 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)