ФорумСообществоПрофессиональная деятельностьВзаимопомощь → Нужен разбор URL как в WP

Нужен разбор URL как в WP

  • mario

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

    Spritz 23 мая 2009 г. 9:25, спустя 3 минуты 11 секунд



    а вот на счет второго, это вот когда объявляешь public для переменных, то получается, что он работает с ним как не локальными, а с глобальными?
    через ссылки понял сразу, но что то где то мне внутри говорит что это пиздец… :( а я привык слушать "что-то внутри", ибо редко подводит :)

    похоже тебе надо почитать про область видимости в PHP.

    читал, но сегодня вчером на свежую голову еще раз прочту, может глубже чего то пойму…
    просто я сейчас сужу так, есть у меня массив $config в нем инфа берется из файла(ну это понятно), и как бы я думал(точнее подсматрел в нескольких исходника) что его делают глобальным… Но как вы рассуждаете, и как я много читал про это, не подходит, вот и ищю метод :)
  • mario

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

    Spritz 23 мая 2009 г. 9:26, спустя 1 минуту 18 секунд

    PS а что на счет этого
    как называется это:
    @$var='чему-то';

    думаю хватит название, остальное в мане прочту…
  • artoodetoo

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

    Spritz 23 мая 2009 г. 9:31, спустя 5 минут 5 секунд

    для config я использую класс со статическими свойствами. это аналог namespace, который скоро появится в PHP.
    даже синтаксис использования namespace классификатора будет совпадать с обращением к свойству класса!

    class mySystem
    {
    public static $config = array();
    //…
    }

    // обращение откуда угодно:
    $base_url = mySystem::$config['base_url'];

    область видимости такого свойства по-настоящему глобальная, но он сопровождается "классификатором-неймспейсом".
    ιιlllιlllι унц-унц
  • artoodetoo

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

    Spritz 23 мая 2009 г. 9:46, спустя 14 минут 57 секунд

    Про @: не знаю как называется, работает так

    сравни результат

    <?php

    error_reporting(E_ALL);

    if (!@$a)
    echo '$a not set yet!' . "<br />\n";

    $divider = 0;
    @$a = 20 / $divider;
    echo '[' . $a .']' . "<br />\n";;

    и так

    <?php

    error_reporting(E_ALL);

    if (!$a)
    echo '$a not set yet!' . "<br />\n";

    $divider = 0;
    $a = 20 / $divider;
    echo '[' . $a .']' . "<br />\n";;

    еще одна "хреновая заглушка" PHP

    помоему идеологически верно и безопасно вот так:

    <?php

    error_reporting(E_ALL);

    if (!isset($a))
    echo '$a not set yet!' . "<br />\n";

    $divider = 0;
    $a = ($divider) ? (20 / $divider) : 'INFINITY';
    echo '[' . $a .']' . "<br />\n";;

    ιιlllιlllι унц-унц
  • artoodetoo

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

    Spritz 23 мая 2009 г. 9:50, спустя 4 минуты 11 секунд

    то есть @ — анальгин вместо дантиста :)
    ιιlllιlllι унц-унц
  • mario

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

    Spritz 23 мая 2009 г. 10:19, спустя 28 минут 43 секунды

    ладно побег, с первого взгляда не понял не чего про этот "анальгин", вечером посмотрим :)
  • artoodetoo

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

    Spritz 23 мая 2009 г. 10:39, спустя 20 минут 22 секунды

    анальгин не лечит, а временно снимает боль. чем больше таких таблеток в программе, тем больше капканов ты себе расставишь
    ιιlllιlllι унц-унц
  • phpdude

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

    Spritz 23 мая 2009 г. 17:54, спустя 7 часов 14 минут 24 секунды

    ахуеть я упустил ветвь)))

    после магаза обязательно прочитаю и отпишусь тута :))
    Сапожник без сапог
  • phpdude

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

    Spritz 23 мая 2009 г. 22:51, спустя 4 часа 57 минут 34 секунды


    "черный ящик" — вот настоящий признак ООП. когда ты можешь не думать как оно внутри устроено и откуда чего берет, но хорошо понимаешь как этим пользоваться. поэтому global — дурной знак. он говорит о том, что какие-то данные не проходят в двери, а лезут в окно.
    сразу вопрос. я не любитель писать обертки для $_GET и $_POST.
    но в силу некоторых обстоятельств в новой моей кмс $_GET = будет ссылкой на свойство Enviroument объекта. ПОСТ я так и оставлю постом сворее всего. Внимание, вопрос: хуево ли это? и делать ли типа POST::get("name") ?

    каковы идеи у пыхомыслящей половины мужской половины пыхолюда?
    Сапожник без сапог
  • phpdude

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

    Spritz 23 мая 2009 г. 23:04, спустя 13 минут 11 секунд



    а вот на счет второго, это вот когда объявляешь public для переменных, то получается, что он работает с ним как не локальными, а с глобальными?
    через ссылки понял сразу, но что то где то мне внутри говорит что это пиздец… :( а я привык слушать "что-то внутри", ибо редко подводит :)

    ну не совсем "глобальные". ты их видишь только в той области видимости, в какой видишь объект-хозяин. похоже тебе надо почитать про область видимости в PHP.

    передавать через ссылки некрасиво потомучто в месте вызова неочевидно, что они возвращаемые. помоему до PHP4 надо было вызывать тоже с амперсандами вот так:
    if ($o->check('abcde', 1024, &$res1, &$res2)) вроде более наглядно, но сейчас такой синтаксис depricated, вызывает предупреждение Notice. вобщем хероватый приём.

    ну и есть третий способ для возврата нескольких значений — возвращать массив :) его можно разбить на отдельные переменные

    list($res1, $res2) = $o->func();

    если по идее функция должна возвращать больше одного значения - она должна возвращать массив. присваивание в паблик свойства - пиздец костыль. по ссылке возвращать - пиздец изврат.

    в общем, если много => массив, ЛИБО объект известной структуры. в зависимости от ситуации выгоднее возвращать объект или массив.
    Сапожник без сапог
  • phpdude

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

    Spritz 23 мая 2009 г. 23:21, спустя 17 минут 13 секунд

    artoodetoo, думаю ты про это не знал)

    http://ru.php.net/manual/ru/reserved.variables.phperrormsg.php

    error_reporting(E_ALL);

    if (!$a)
    echo '$a not set yet!' . "<br />\n";

    $divider = 0;
    $a = 20 / $divider;
    if(!$a)
    die($php_errormsg);
    echo '[' . $a .']' . "<br />\n";


    ;)
    Сапожник без сапог
  • phpdude

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

    Spritz 23 мая 2009 г. 23:24, спустя 2 минуты 57 секунд

  • phpdude

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

    Spritz 23 мая 2009 г. 23:28, спустя 3 минуты 18 секунд

    artoodetoo, смотри чо нашел)

    http://ru.php.net/manual/ru/language.operators.type.php
    Сапожник без сапог
  • phpdude

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

    Spritz 23 мая 2009 г. 23:28, спустя 37 секунд

    mario, вот тебе про @
    http://ru.php.net/manual/ru/language.operators.errorcontrol.php
    Сапожник без сапог
  • mario

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

    Spritz 24 мая 2009 г. 0:19, спустя 50 минут 19 секунд


    mario, вот тебе про @
    http://ru.php.net/manual/ru/language.operators.errorcontrol.php

    аха спасибо!
    ну это же пиздец…:
    Внимание

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





    а вот на счет второго, это вот когда объявляешь public для переменных, то получается, что он работает с ним как не локальными, а с глобальными?
    через ссылки понял сразу, но что то где то мне внутри говорит что это пиздец… :( а я привык слушать "что-то внутри", ибо редко подводит :)

    ну не совсем "глобальные". ты их видишь только в той области видимости, в какой видишь объект-хозяин. похоже тебе надо почитать про область видимости в PHP.

    передавать через ссылки некрасиво потомучто в месте вызова неочевидно, что они возвращаемые. помоему до PHP4 надо было вызывать тоже с амперсандами вот так:
    if ($o->check('abcde', 1024, &$res1, &$res2)) вроде более наглядно, но сейчас такой синтаксис depricated, вызывает предупреждение Notice. вобщем хероватый приём.

    ну и есть третий способ для возврата нескольких значений — возвращать массив :) его можно разбить на отдельные переменные

    list($res1, $res2) = $o->func();

    если по идее функция должна возвращать больше одного значения - она должна возвращать массив. присваивание в паблик свойства - пиздец костыль. по ссылке возвращать - пиздец изврат.

    в общем, если много => массив, ЛИБО объект известной структуры. в зависимости от ситуации выгоднее возвращать объект или массив.

    я тоже думал про массив, но… хз короче, надо будет через массивы делать по идеи… а про ссылки мне сразу не понравилось, ну вот не пойму почему через паблик изврат?

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