ФорумПрограммированиеPHP для идиотов → генерация URL's

генерация URL's

  • Абырвалг

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

    Spritz 6 июня 2010 г. 1:55, спустя 1 минуту 19 секунд

    смотри сюда http://www.slideshare.net/fabpot/symfony-components-3393116 с 91 страницы и поймешь, что я хочу
    Спустя 22 сек.
    в простом варианте - модуль/action/params
    да ну, это ж гавно
  • phpdude

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

    Spritz 6 июня 2010 г. 1:58, спустя 2 минуты 9 секунд


    смотри сюда http://www.slideshare.net/fabpot/symfony-components-3393116 с 91 страницы и поймешь, что я хочу
    Спустя 22 сек.
    в простом варианте - модуль/action/params
    да ну, это ж гавно

    могу даже не смотреть, думаю понимаю что ты хочешь
    Спустя 110 сек.
    глянул … ничего нового
    Сапожник без сапог
  • Абырвалг

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

    Spritz 6 июня 2010 г. 2:10, спустя 12 минут 25 секунд

    12000

    хуяссе


    ну так вот, и что - тебе не понравилось?)
  • kostyl

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

    Spritz 6 июня 2010 г. 2:33, спустя 23 минуты 21 секунду

    У меня есть много всякой финги. Певрое - обычная адресация. Вторая - выбирается по типу запроса (с ЧПУ и без):
    class KCZ_Locator {
    /**
    * @var string
    */
    private $_Root;
    /**
    * @var array
    */
    private $_Vars;
    /**
    * @var array
    */
    private $_Values;
    /**
    * @var string
    */
    private $_LastLocation;
    /**
    * @static
    * @param $Root index
    * @return KCZ_Locator
    */
    public static function Create($Root = 'index')
    {
    return new KCZ_Locator($Root);
    }
    /**
    * @param string $Base
    */
    public function __construct($Root)
    {
    $this->_Vars = array();
    $this->_Values = array();
    $this->_LastLocation = NULL;
    $this->_Root = $Root;
    }
    /**
    * @param string $Var
    * @return KCZ_Locator
    */
    public function AddVar($Var)
    {
    $this->_Vars[] = $Var;
    $this->_LastLocation = NULL;
    return $this;
    }
    /**
    * @param string $Value
    * @return KCZ_Locator
    */
    public function AddValue($Value)
    {
    $this->_Values[] = $Value;
    $this->_LastLocation = NULL;
    return $this;
    }
    /**
    * @return string
    */
    public function GetLocation()
    {
    if(NULL === $this->_LastLocation) {
    $this->_LastLocation = $this->_CreateLocation();
    }
    return $this->_LastLocation;
    }
    /**
    * @static
    * @param string $UrlToLocate
    * @param bool $Exit TRUE
    */
    public static function Locate($UrlToLocate, $Exit = TRUE)
    {
    header('Location: ' . $UrlToLocate);
    if($Exit) {
    exit(0);
    }
    }
    /**
    * @return string
    */
    private function _CreateLocation()
    {
    $Location = '';
    $CountVars = count($this->_Vars);
    for($i = 0; $i < $CountVars; $i++) {
    $Location .= $this->_Vars[$i] . '=' . ((isset($this->_Values[$i])) ? urlencode($this->_Values[$i]) : '') . '&';
    }
    return ($Location) ?
    ($this->_Root . PHP_EXT . '?' . (KCZ_Str::Substr($Location, 0, KCZ_Str::Strlen($Location) - 1))) :
    ($this->_Root . PHP_EXT);
    }
    }

    class KTF_Locator {
    /**
    * @var array
    */
    private $_Vars;
    /**
    * @var array
    */
    private $_Values;
    /**
    * @var string
    */
    private $_LastLocation;
    /**
    * @static
    * @return KTF_Locator
    */
    public static function Create()
    {
    return new KTF_Locator();
    }

    public function __construct()
    {
    $this->_Vars = array();
    $this->_Values = array();
    $this->_LastLocation = NULL;
    }
    /**
    * @param string $Var
    * @return KTF_Locator
    */
    public function AddVar($Var)
    {
    $this->_Vars[] = $Var;
    $this->_LastLocation = NULL;
    return $this;
    }
    /**
    * @param string $Value
    * @return KTF_Locator
    */
    public function AddValue($Value)
    {
    $this->_Values[] = $Value;
    $this->_LastLocation = NULL;
    return $this;
    }
    /**
    * @return string
    */
    public function GetLocation()
    {
    if(NULL === $this->_LastLocation) {
    $this->_LastLocation = $this->_CreateLocation();
    }
    return $this->_LastLocation;
    }
    /**
    * @static
    * @param string $UrlToLocate
    * @param bool $Exit TRUE
    */
    public static function Locate($UrlToLocate, $Exit = TRUE)
    {
    header('Location: ' . $UrlToLocate);
    if($Exit) {
    exit(0);
    }
    }
    /**
    * @return string
    */
    private function _CreateLocation()
    {
    $Location = '';
    $CountVars = count($this->_Vars);
    $i = 0;
    while($i < $CountVars) {
    if(KTF_Request::GetRequestMode() == KTF_Request::RM_NORMAL) {
    $Location .= $this->_Vars[$i] . '=' . ((isset($this->_Values[$i])) ? urlencode($this->_Values[$i]) : '') . '&';
    }
    else {
    $Location .= $this->_Vars[$i] . '/' . ((isset($this->_Values[$i])) ? urlencode($this->_Values[$i]) . '/' : '');
    }
    $i++;
    }
    $Location = rtrim($Location, '/');
    if(KTF_Request::GetRequestMode() == KTF_Request::RM_NORMAL) {
    if($Location === '') {
    $Location = 'index' . PHP_EXT;
    }
    else {

    $Location = 'index' . PHP_EXT . '?' . (KTF_Str::Substr($Location, 0, KTF_Str::Strlen($Location) - 1));
    }
    }
    else {
    $CountValues = count($this->_Values);
    while($i < $CountValues) {
    $Location .= '/' . urlencode($this->_Values[$i]);
    $i++;
    }
    $Location = KTF_Request::GetBaseUri() . $Location;
    }
    return $Location;
    }
    }


    и что с предварительным просмотром? нифига нельзя посмореть
  • Абырвалг

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

    Spritz 6 июня 2010 г. 2:45, спустя 11 минут 44 секунды

    ну это нифига не похоже на то изящное решение, которое предлагает sf2))
    а чем эти 2 класса друг от друга-то отличаются?
  • kostyl

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

    Spritz 6 июня 2010 г. 2:53, спустя 7 минут 52 секунды

    а чем эти 2 класса друг от друга-то отличаются?

    знанием о наличие ЧПУ в проекте. Это древний код, просто ты создал топик - я кинул кода. Вот и форум получился ))
    которое предлагает sf2

    я флешь плеер удалил нафиг…
  • Givi

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

    Spritz 6 июня 2010 г. 11:41, спустя 8 часов 48 минут 1 секунду

    Абырвалг, отчего ты решил что "модуль/action/params" говно!? Ты даже не велосипед стараешься опровергнуть, а круглость колеса, так как если ОЧЕНЬ много проектов юзают эту схему и все у них работает на все 100%, то тут и думать нехуй - это хорошая схема.
    Да и в целом поюзав роутер у Коханы я понял, что пусть у неё и крутяцкий роутер (у третей версии), но все равно он нужен в большинстве случаев либо для показа крутости разработчика либо же как и в случае с собакой, которой нечего делать. и она себе находит известное всем занятие :)
  • Абырвалг

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

    Spritz 6 июня 2010 г. 11:51, спустя 9 минут 33 секунды

    для админки соедеть. Сам такой там использую. Но для фронтенда - ни в коем случае. Это отстой
  • phpdude

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

    Spritz 6 июня 2010 г. 12:01, спустя 10 минут 31 секунду


    для админки соедеть. Сам такой там использую. Но для фронтенда - ни в коем случае. Это отстой
    ты как велосипедист, ездящий на велике, нО! но ты от него отличаешься тем, что сам себе камни на дорогу разбрасываешь :)

    вроде и едешь, но с запинками. нахуй тебе этот роутерс файл? это же хуета, это от силы первичный роутер для показки крутости и не больше, а знаешь что я подскажу? для сео круче не такой роутер, а возможность любой странице дать ЛЮБОЙ урл, но тут роутер соснет хуй. так что его крутость необоснованная имхо
    Спустя 27 сек.
    ну это я так, гиви подддержать вмешался)
    Сапожник без сапог
  • Абырвалг

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

    Spritz 6 июня 2010 г. 12:09, спустя 7 минут 48 секунд

    а возможность любой странице дать ЛЮБОЙ урл

    хе-хе. Мои BL уже такое делают, даже круче. Я больше скажу: год назад, когда никаких BL и в помине не было, я такое уже делал. От этого и отталкивался, при разработке роутера. Это уже потом появились разные драйвера: AdminPanel (module/action/param1/value1/p2/v2), SemiDynamic (/:year/:id)
  • phpdude

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

    Spritz 6 июня 2010 г. 12:15, спустя 6 минут 14 секунд

    Абырвалг, круто, я отстал значит
    Сапожник без сапог
  • kostyl

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

    Spritz 6 июня 2010 г. 14:20, спустя 2 часа 5 минут 11 секунд

    я тоже думаю как бы припиздячить декоратор к роутеру на свой блог - собираюсь переделать всё, посадить на ЧПУ то что есть и что будет…
  • Givi

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

    Spritz 6 июня 2010 г. 23:31, спустя 9 часов 10 минут 17 секунд

    Абырвалг, итак, чем же хуевый вариант с "модуль-экшен-параметры" ? Ну и +, как сказал Дуд, для СЕо-дрочеров возможность задать свой УРЛ для каждой из страниц.
    Чем твои извраты будут лучше? Удобством полуторачасовой настройки работы роутера и в конце-концов понять что оно в общем-то нах не нужно.
    Мне вот в Кохане роутер понравился поначалу, но в целом почитал на форуме сколько людей сделало из этой фишки действительно что-то функциональное - Получилось единицы! Остальные ебут сами себе моск, а в результате имеют все тот же "модуль-экшен-параметры", только вот местами они их поменяли :).
    да и то, в большинстве случаем шаманства с роутингом у людей ушло много времени и нервов. А результат все равно один - страницы отображаются, и пользователь и в том и в ином случае видит одну и ту же информацию. А большего ему и не нужно.
  • Абырвалг

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

    Spritz 7 июня 2010 г. 3:50, спустя 4 часа 19 минут 3 секунды

    хлебные крошки

    /forum
    /forum/1 # раздел 1
    /forum/1/2 # раздел 1 тема 2
    /forum/1/2.4 # раздел 1 тема 2 страница 4

    /groups/3/forum # форум 3 группы
  • kostyl

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

    Spritz 7 июня 2010 г. 4:00, спустя 10 минут 1 секунду

    Абырвалг, не слушай никого… ;)

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