ФорумПрограммированиеPHP для идиотовPHP и ООП → класс разбора url (прошу замечаний так как в ООП новичок)

класс разбора url (прошу замечаний так как в ООП новичок)

  • CyberSport

    Сообщения: 245 Репутация: N Группа: Кто попало

    Spritz 15 января 2009 г. 12:41

    пишу класс функциональность заключается в следующем:
    есть url:   www.site.ru/user/add/10/20

    должен возвращать название модуля тоесть - user
    возвращать действие - add
    и параметр а точнее массив параметров - array("10","20")

    сам класс

    <?php

    class router
    {

    static function getModuleName()
    {
    $module_name = explode('/', $_SERVER['REQUEST_URI']);
    $module_name = $module_name[1];
    if (empty($module_name)) {
    $module_name = "main";
    }
    return $module_name;
    }


    static function getActionName()
    {
    $action_name = explode('/', $_SERVER['REQUEST_URI']);
    $action_name = ($action_name[2])?$action_name[2]:false;
    return $action_name;
    }


    static function getParameters()
    {
    $parameters = array();
    $url_sections = explode('/', $_SERVER['REQUEST_URI']);
    if (count($url_sections)>3) {
    for($i = 3; $i < count($url_sections); $i++) {
    $parameters[] =  $url_sections[$i];
    }
    }
    return $parameters;
    }

    }
  • CyberSport

    Сообщения: 245 Репутация: N Группа: Кто попало

    Spritz 15 января 2009 г. 12:42, спустя 1 минуту 6 секунд

    при создании темы не нашел тега код
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 15 января 2009 г. 12:49, спустя 6 минут 26 секунд

    в каком смысле "не нашел"?

    [tt]
    [/tt]
  • CyberSport

    Сообщения: 245 Репутация: N Группа: Кто попало

    Spritz 15 января 2009 г. 12:52, спустя 2 минуты 49 секунд


    в каком смысле "не нашел"?

    [tt]
    [/tt]

    не катит
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 января 2009 г. 13:16, спустя 24 минуты 34 секунды

    дремучий ебучий класс. минус - не учитывает базу сайта = не будет работать в папке /a/ к примеру.
    а в чем проблема то?
    Сапожник без сапог
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 15 января 2009 г. 14:04, спустя 47 минут 46 секунд

    Фактически у меня тоже самое - но мысли глобальней - лучше массив из эксплоде дать всем модулям и потом пусть они чехляться что с ним делать
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 января 2009 г. 15:20, спустя 1 час 15 минут 58 секунд

    незнание - порок! (с) дуд.

    static function getParameters()
    {
    $parameters = array();
    $url_sections = explode('/', $_SERVER['REQUEST_URI']);
    if (count($url_sections)>3) {
    for($i = 3; $i < count($url_sections); $i++) {
    $parameters[] = $url_sections[$i];
    }
    }
    return $parameters;
    }

    }

    = array_slice.
    Сапожник без сапог
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 15 января 2009 г. 15:56, спустя 35 минут 51 секунду

    $url_get_array = explode('/',$_SERVER['REQUEST_URI']);
    for($k=0;count($url_get_array)>$k;$k++) {
    $url_get = 'url_get_'.($k+1);
    $$url_get = $url_get_array[$k+1];
    }


    п.с. Насчет count($url_get_array) в условиях знаю, что лучше вынести из цикла, чтоб каждый раз не пересчитывало кол-во элементов, но пока руки не доходят.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 января 2009 г. 15:58, спустя 2 минуты 34 секунды


    $url_get_array = explode('/',$_SERVER['REQUEST_URI']);
    for($k=0;count($url_get_array)>$k;$k++) {
    $url_get = 'url_get_'.($k+1);
    $$url_get = $url_get_array[$k+1];
    }


    п.с. Насчет count($url_get_array) в условиях знаю, что лучше вынести из цикла, чтоб каждый раз не пересчитывало кол-во элементов, но пока руки не доходят.
    чтоб каждый раз не пересчитывало кол-во элементов

    вы видимо любите пхп4
    Сапожник без сапог
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 15 января 2009 г. 16:02, спустя 3 минуты 55 секунд

    phpdude
    Не, я просто по незнанию применяю простую логику - каждый раз проход по условиям, каждый раз пересчет :) Может и ошибаюсь. Просто не изучал пока этот вопрос, так как для такого кол-ва элементов в массиве (цикле) это не ощутиться ни в плюс ни в минус.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 января 2009 г. 16:04, спустя 1 минуту 46 секунд


    <?
    function test($val)
    {
    echo "called <br/>";
    return count($val);
    }

    $test = array();
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;

    for($i =0; $i<test($test);$i++) {} ;



    сколько увидел каледов?
    ps:// не могу проверить. пхп нет под рукой.
    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 января 2009 г. 16:06, спустя 1 минуту 33 секунды



    <?
    function test($val)
    {
    echo "called <br/>";
    return count($val);
    }

    $test = array();
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;
    $test[] = 1;

    for($i =0; $i<test($test);$i++) {} ;



    сколько увидел каледов?
    ps:// не могу проверить. пхп нет под рукой.
    ахуеть …. у меня пхп5.

    motango:/tmp# php test.php
    called <br/>called <br/>called <br/>called <br/>called <br/>called <br/>called <br/>called <br/>called <br/>called <br/>called <br/>motango:/tmp#
    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 января 2009 г. 16:06, спустя 28 секунд

    я где то читал что эта статья про каунты - пхп4. видимо там неправда была написана ….
    Сапожник без сапог
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 15 января 2009 г. 16:20, спустя 13 минут 35 секунд

    phpdude
    Ну шо есть, то есть. Но как я уже говорил - ввиду малого кол-ва элементов, мне пох насколько быстро оно выполняется в том или ином случае. Мне удобнее видеть в данном случае меньше кода. Хотя может войти в привычку - нужно исправляться :)

    Кстати, читал тоже давно ещё про этот прикол. Только там все было про пхп4 (книга старая), потому не знал (да и сейчас не знаю, не считая твоего эксперимента) что да как.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 января 2009 г. 16:24, спустя 4 минуты 9 секунд

    Givi, каунт каждый пробег циклы выполняется. хуево дело, у меня помнится есть куски на тысячу элементов :-D

    мне вот интересно форич все еще создает копию массива для работы с ним, или нет, думаю что да, но может они это убили … я не люблю for(..) всегда юзаю foreach()
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!