ОПРОС мнений по поводу ковычек

Discussion in 'PHP' started by barnaki, 8 Jan 2009.

  1. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    140
    Reputations:
    4
    ОПРОС мнений по поводу ковычек в PHP

    я только начал и у меня вопрос. насколько важно следить за тем какие ковычки ставить . или можно везде ставть " . хотелось бы иметь правильный стиль.
    подскажите старички :)
     
    #1 barnaki, 8 Jan 2009
    Last edited: 8 Jan 2009
  2. w.u.n.

    w.u.n. Member

    Joined:
    13 Dec 2008
    Messages:
    40
    Likes Received:
    26
    Reputations:
    1
    Везде кроме mysql запросов использовать одинарные кавычки.
     
  3. prescott

    prescott Elder - Старейшина

    Joined:
    28 Jul 2008
    Messages:
    132
    Likes Received:
    43
    Reputations:
    5
    Если хочешь чтобы переменные внутри строки интерпретировались - двойные, если нет - одинарные.

    Code:
    $t="123";
    echo "Переменная $t"; => Переменная 123
    echo 'Переменная $t'; => Переменная $t
    
    // с одинарными и использованием переменной
    echo 'Переменная '.$t;  => Переменная 123
    
    Больше не помню где это принципиально.
     
  4. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    В двойных кавычках обрабатываются такие последовательности, как \n, \t, \r, \x41 и т.п. одинарных - нет.

    А вообще, советую почитать тут: http://ru2.php.net/language.types.string
    Всё подробно объясняется.
     
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Я лично юзаю одинарные, ну кроме конечно \r\n\t и др (как сказано выше).
    Более того, переменные нужно выносить за кавычки (во всяком случае юзанье переменных в двойных кавычках считается не хорошим стилем).
    И SQL запросы ничем не особенные (это к посту #2). Там фишка в том, что данные следует вносить в кавычках (одинарных), поэтому чтобы их не экранировать весь запрос кидают в двойные.
    Вроде бы всё...
     
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    да бред.

    echo "some $line with $many $variables";
    Просто многие нубы через склеивание делают, читаемость сильно ухудшается.


    По книгам Фленова учился?))
    Правильно юзать то, что удобнее.

    P.S. интересно, как скоро прибежит неуч, который первым вякнет, что одинарные быстрее?)
     
    1 person likes this.
  7. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    PHP:
    echo "а я люблю вот так {$kak[16]} вот";
    {} - выделяют переменную в строке, использую при вставке элемента массива
     
    #7 ntldr, 9 Jan 2009
    Last edited: 9 Jan 2009
  8. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Слава богу не учился по этому сборнику страшилок)

    Ага, быстрее, знаешь почему?))
    Потому что при использовании одинарных кавычек ты нажимаешь на букву Э в латинской раскладке, а при использовании двойных тебе приходится ещё и нажимать шифт (так же шифт + 2).
    И с этим нажатием на шифт ты теряешь драгоценное время (а знаешь сколько за год набегает времени?), а так же силы, которые уходят на нажатие шифта, и как следствие повышенная уставаемость, стрессы, депрессии, тошнота, недомогание, судороги, кома и летальный исход, так что юзайте одинарные кавычки :D
     
    1 person likes this.
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    а вот так " {$kak[16]}" точно нельзя, неправильно, и небезопасно
     
    1 person likes this.
  10. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    почему нельзя то а?
     
  11. w.u.n.

    w.u.n. Member

    Joined:
    13 Dec 2008
    Messages:
    40
    Likes Received:
    26
    Reputations:
    1
    это почему же?
     
  12. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ну это, некрасиво как-то, щаз еще погуглю, так не помню
     
  13. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Это один из двух одобренных в ZendFramework сбособов вставлять переменные в " строки.
     
  14. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    наоборот красиво. ИМХО красивее
    echo "ололо {$omg} привет" чем без скобок.

    еще случай
    тебе надо вывести строку "я-хакир"
    $xak = "хак";
    в лучшем виде будет echo "я-{$xak}ир";

    а вообще форматный вывод решает
     
    #14 ntldr, 9 Jan 2009
    Last edited: 9 Jan 2009
  15. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Я бы так сделал:

    тебе надо вывести строку "я-хакир"
    PHP:
    $xak 'хак';
    echo 
    "я-$xakир";
     
  16. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    да я не очень хороший пример привел. но читаемость моего варианта в разы лучше
     
  17. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Вариант с {} позволяет вставлять не только переменные, но и любые массивы или переменные из классов.
    PHP:
    echo "абвг {$var[1]['str']} {$xxx->blabla['qwerty']}";
    Это очень удобно для вывода переменных с использованием heredoc-синтаксиса.
     
  18. oRb

    oRb Elder - Старейшина

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    Можно все, вот только
    PHP:
    echo '[0] => '.$array[0]."\n";
    И читабельно, и работает быстрее, чем вариации типа:
    PHP:
    echo "[0] => {$array[0]}\n";
     
  19. oRb

    oRb Elder - Старейшина

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    Сделал скриптик для примера:
    PHP:
    <?php
    function getmicrotime() 

        list(
    $usec$sec) = explode(" "microtime()); 
        return ((float)
    $usec + (float)$sec); 

    define(N1000000);
    for(
    $i=0$i<N$i++)
        
    getmicrotime();
        
    $str "";
    $array['a'] = 'efg';
    $start getmicrotime();
    for(
    $i=0$i<N$i++)
        
    $str 'abcd '.$array['a'].' hij';
    echo 
    getmicrotime() - $start"\n";

    $str "";
    $array['a'] = 'efg';
    $start getmicrotime();
    for(
    $i=0$i<N$i++)
        
    $str "abcd ".$array["a"]." hij";
    echo 
    getmicrotime() - $start"\n";

    $str "";
    $array['a'] = 'efg';
    $start getmicrotime();
    for(
    $i=0$i<N$i++)
        
    $str "abcd {$array['a']} hij";
    echo 
    getmicrotime() - $start"\n";

    $str "";
    $array['a'] = 'efg';
    $start getmicrotime();
    for(
    $i=0$i<N$i++)
        
    $str = <<<HD
        abcd {$array['a']} hij
    HD;
    echo 
    getmicrotime() - $start"\n";

    $str "";
    $array['a'] = 'efg';
    $start getmicrotime();
    for(
    $i=0$i<N$i++)
        
    $str = <<<HD
        abcd $array[a] hij
    HD;
    echo 
    getmicrotime() - $start"\n";

    ?>
    Результаты:
     
    1 person likes this.
  20. SMiX

    SMiX Elder - Старейшина

    Joined:
    25 Jul 2005
    Messages:
    227
    Likes Received:
    55
    Reputations:
    29
    Глупо так делать выводы. Как минимум, нужно произвести этот тест на нескольких машинах и не 1 раз. Также стоит выделить расчёт каждого варианта в отдельный скрипт.
    На моём сервере к примеру 2 вариант в 2 раза "быстрее" первого.
     
    1 person likes this.