Использование NULL вместо инструкции для конструкции if ()

Тема в разделе "Как сделать...", создана пользователем Sunday, 1 дек 2012.

  1. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    737
    Симпатии:
    324
    Правильно ли использовать такую конструкцию?
    PHP:
    if(isset($var)) NULL;
    else {...}
    У меня это работает, но хотелось бы знать не вылезет ли это боком при каких-нибудь обстоятельствах.
     
  2. ArtyGrand

    ArtyGrand Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    80
    Симпатии:
    37
    обычно так пишут
    PHP:
    if(!isset($var)){
     
    }
     
  3. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    737
    Симпатии:
    324
    Я это понимаю, но интересуюсь с целью самообучения. Т.к. примеров подобного применения не нашел.
     
  4. SolutionFix

    SolutionFix 17 лет програмлю ;)

    Регистр.:
    20 ноя 2006
    Сообщения:
    272
    Симпатии:
    318
    Давай по буквам разберем.
    1. Сначала такой код:
    PHP:
    <?php
        5
    ;
        echo 
    3;
    ?>
    5; - это просто выражение без присваивания, оно вычисляется (можно написать точно так же и 5+3 допустим) но никуда не сохраняется, в php это вполне допускается во всех версиях.

    2. Теперь то же самое, но с NULL.
    PHP:
    <?php
        NULL
    ;
        echo 
    3;
    ?>
    Все точно то же. NULL - всего лишь специальная константа. Допустимо, хотя и бессмысленно.

    3. Теперь к твоему примеру. Если установлено значение $var то вычислить выражение и никуда его не сохранять, если нет - то выполнить действия. Я не вижу обстоятельств, при которых это может вызвать проблемы. Константа NULL из php исчезнет? Запретят записывать выражения без присваивания? В общем проблем нет.

    4. Imho более элегантно записать то что ты хочешь вот так
    PHP:
    <?php
        
    if(isset($var)) {}
        else {...}
    ?>
    или хотя бы так
    PHP:
    <?php
        
    if(isset($var)) ;
        else {...}
    ?>
    лично мне бы в чужом коде этот NULL резанул глаза, а просто точка с запятой или (гораздо лучше) пустые фигурные скобки подразумевают "эту ветку пока не сделали, оставили для будущего чтобы потом не думать куда вписать кусок кода". Пустые скобки кстати принято в таких случаях писать, по крайней мере у нас было.

    5. Ну и наконец банальщина. Надеюсь ты спросил потому что та ветка - это заделка на будущее, а не потому что ты не знаешь конструкции
    PHP:
    <?php
        
    if(!isset($var)) {...}
    ?>

    PS Что с питона перешел? по "pass" скучаешь? :)
    PPS Ты как тему-то назвал? Что "NULL"? Ну понадеемся что latteo переименует
     
    latteo и Sunday нравится это.
  5. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    737
    Симпатии:
    324
    А тему назвал просто NULL, т.к. это раздел PHP и какой здесь еще может быть NULL? :)
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.521
    Симпатии:
    1.370
    Не информативное (бессмысленное) название темы - на 3 дня мог бы в бан отправить...

    NULL можно по разному использовать...

    По моему мнению, название: "Использование NULL вместо инструкции для конструкции if ()", - более информативно :)
     
    Extalionez и SolutionFix нравится это.