[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Правильность кода
shakatakas
Всем здрасте, имеется такой вот код роутинга, хочется узнать насколько он "правильный" и есть ли велосипеды по короче и быстрей??

$dir = 'pimp_style';
$module_array = scandir('./module/');
$rtr_url = explode('/', $_SERVER['REQUEST_URI']);
$rtr = array();
foreach ($rtr_url as $value) {
if ($value !== $dir & !empty($value)) {
$rtr[] = trim($value);
}
}

if(isset($rtr[0])) {
foreach ($module_array as $var) {
if ($rtr[0].'.php' == $var) {
include './module/'.$var;
}
}
}
else {include './module/index.php';}




Спустя 1 час, 58 минут, 31 секунда (23.08.2012 - 15:10) Placido написал(а):
Цитата (shakatakas @ 23.08.2012 - 14:11)
if ($value !== $dir & !empty($value))

В условии необходимо использовать логическое И (&& или and), а не побитовое (&):
if ($value !== $dir && !empty($value))

Спустя 5 минут, 52 секунды (23.08.2012 - 15:15) shakatakas написал(а):
Что можно/нужно еще подправить? wink.gif

Спустя 45 минут, 55 секунд (23.08.2012 - 16:01) johniek_comp написал(а):
shakatakas
посмотри как роутинг реализован в кохана, и скосишь сразу свой код smile.gif

Спустя 17 минут, 56 секунд (23.08.2012 - 16:19) inpost написал(а):
shakatakas
Ну для начала, можно было бы проще использовать in_array smile.gif
Ну а потом, не очень мне нравится такой роутер. Каждый делает в своём стиле, и этот не мой стиль! smile.gif

Спустя 30 минут, 22 секунды (23.08.2012 - 16:50) shakatakas написал(а):
Ясненько, а пример более продуктивного роутера предоставите? rolleyes.gif

Спустя 3 часа, 39 минут, 41 секунда (23.08.2012 - 20:29) DarkLynx написал(а):
Цитата (shakatakas @ 23.08.2012 - 14:50)
Ясненько, а пример более продуктивного роутера предоставите? rolleyes.gif

kohana framework

Спустя 5 минут, 26 секунд (23.08.2012 - 20:35) shakatakas написал(а):
Мда)

Спустя 7 минут, 3 секунды (23.08.2012 - 20:42) inpost написал(а):
shakatakas
irbis, zend, kohana, yii, посмотри что делают они. А вообще, если твой работает так, как ТЕБЕ надо, то нафиг менять? Под каждую задачу своё!

Спустя 7 минут, 49 секунд (23.08.2012 - 20:50) shakatakas написал(а):
Я собственно хотел советов услышать вдруг есть другие пути, легче, меньше да правильней.

Спустя 5 часов, 42 минуты, 9 секунд (24.08.2012 - 02:32) Invis1ble написал(а):
Цитата
$module_array = scandir('./module/');

Цитата
foreach ($module_array as $var) {
    if ($rtr[0].'.php' == $var) {

зачем шерстить всю директорию и потом перебирать весь массив (причем без break), если понадобится подключить лишь один файл? открой для себя file_exists() wink.gif



Спустя 3 минуты, 53 секунды Invis1ble написал(а):
Цитата
$rtr_url = explode('/', $_SERVER['REQUEST_URI']);
$rtr = array();
    foreach ($rtr_url as  $value) {
        if ($value !== $dir & !empty($value)) {
            $rtr[] = trim($value);
        }
    }

Это тоже лишние и неоптимальные движения. Тебе ведь нужен всего лишь последний сегмент url, воспользуйся строковыми функциями.

Спустя 7 часов, 4 минуты, 29 секунд (24.08.2012 - 09:36) казин-федор.рф написал(а):
shakatakas,
1) Убери сканирование папки, это не производительно;
2) Абстрагируйся от файловой системы, то есть если у тебя был например url типа site.ru/page.php или site/module/page.php, сделай, что то типа:
site.ru/page;
site.ru?route=page;
site.ru/index.php/page

чем проще у тебя url, тем проще переход в режим ЧПУ и обратно.

Ну и велосипед, который быстрее твоего, да и любого роутера(на регулярках), http://pyha.ru/forum/topic/8085 .

Спустя 1 день, 10 часов, 8 минут, 31 секунда (25.08.2012 - 19:45) shakatakas написал(а):
Всем спасибо за ответы. Тему можно закрывать если тут такое котирует ph34r.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.