Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   ОПРОС мнений по поводу ковычек (https://forum.antichat.xyz/showthread.php?t=100202)

barnaki 08.01.2009 18:08

ОПРОС мнений по поводу ковычек в PHP
 
я только начал и у меня вопрос. насколько важно следить за тем какие ковычки ставить . или можно везде ставть " . хотелось бы иметь правильный стиль.
подскажите старички :)

w.u.n. 08.01.2009 18:11

Везде кроме mysql запросов использовать одинарные кавычки.

prescott 08.01.2009 18:30

Если хочешь чтобы переменные внутри строки интерпретировались - двойные, если нет - одинарные.

Код:

$t="123";
echo "Переменная $t"; => Переменная 123
echo 'Переменная $t'; => Переменная $t

// с одинарными и использованием переменной
echo 'Переменная '.$t;  => Переменная 123

Больше не помню где это принципиально.

d_x 08.01.2009 18:51

В двойных кавычках обрабатываются такие последовательности, как \n, \t, \r, \x41 и т.п. одинарных - нет.

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

.:EnoT:. 09.01.2009 01:00

Я лично юзаю одинарные, ну кроме конечно \r\n\t и др (как сказано выше).
Более того, переменные нужно выносить за кавычки (во всяком случае юзанье переменных в двойных кавычках считается не хорошим стилем).
И SQL запросы ничем не особенные (это к посту #2). Там фишка в том, что данные следует вносить в кавычках (одинарных), поэтому чтобы их не экранировать весь запрос кидают в двойные.
Вроде бы всё...

nerezus 09.01.2009 01:16

Цитата:

Везде кроме mysql запросов использовать одинарные кавычки.
да бред.

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


Цитата:

Более того, переменные нужно выносить за кавычки (во всяком случае юзанье переменных в двойных кавычках считается не хорошим стилем).
По книгам Фленова учился?))
Правильно юзать то, что удобнее.

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

ntldr 09.01.2009 01:28

PHP код:

echo "а я люблю вот так {$kak[16]} вот"

{} - выделяют переменную в строке, использую при вставке элемента массива

.:EnoT:. 09.01.2009 01:29

Цитата:

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

Цитата:

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

Pashkela 09.01.2009 01:29

а вот так " {$kak[16]}" точно нельзя, неправильно, и небезопасно

ntldr 09.01.2009 01:31

Цитата:

Сообщение от Pashkela
а вот так " {$kak[16]}" точно нельзя, неправильно, и небезопасно

почему нельзя то а?

w.u.n. 09.01.2009 01:33

Цитата:

Сообщение от Pashkela
а вот так " {$kak[16]}" точно нельзя, неправильно, и небезопасно

это почему же?

Pashkela 09.01.2009 01:41

ну это, некрасиво как-то, щаз еще погуглю, так не помню

nerezus 09.01.2009 01:46

Цитата:

а вот так " {$kak[16]}" точно нельзя, неправильно, и небезопасно
Это один из двух одобренных в ZendFramework сбособов вставлять переменные в " строки.

ntldr 09.01.2009 01:59

Цитата:

Сообщение от Pashkela
ну это, некрасиво как-то, щаз еще погуглю, так не помню

наоборот красиво. ИМХО красивее
echo "ололо {$omg} привет" чем без скобок.

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

а вообще форматный вывод решает

Pashkela 09.01.2009 02:07

Цитата:

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

тебе надо вывести строку "я-хакир"
PHP код:

$xak 'хак';
echo 
"я-$xakир"


ntldr 09.01.2009 02:30

Цитата:

Сообщение от Pashkela
Я бы так сделал:

тебе надо вывести строку "я-хакир"
PHP код:

$xak 'хак';
echo 
"я-$xakир"


да я не очень хороший пример привел. но читаемость моего варианта в разы лучше

d_x 09.01.2009 14:13

Вариант с {} позволяет вставлять не только переменные, но и любые массивы или переменные из классов.
PHP код:

echo "абвг {$var[1]['str']} {$xxx->blabla['qwerty']}"

Это очень удобно для вывода переменных с использованием heredoc-синтаксиса.

oRb 09.01.2009 15:18

Можно все, вот только
PHP код:

echo '[0] => '.$array[0]."\n"

И читабельно, и работает быстрее, чем вариации типа:
PHP код:

echo "[0] => {$array[0]}\n"


oRb 09.01.2009 15:30

Сделал скриптик для примера:
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";

?>

Результаты:
Цитата:

0.789710998535
0.792525053024
1.04027700424
1.01121997833
1.00872707367

SMiX 09.01.2009 16:51

Глупо так делать выводы. Как минимум, нужно произвести этот тест на нескольких машинах и не 1 раз. Также стоит выделить расчёт каждого варианта в отдельный скрипт.
На моём сервере к примеру 2 вариант в 2 раза "быстрее" первого.

[x26]VOLAND 09.01.2009 19:01

В реальном приложении (где в подавляющем большинстве таких выводов не больше 1-2 сотен) разница составит десятитысячные доли секунды. Доо, конечно, это просто гигантская разница!! Тут же надо бросаться и оптимизировать!! Вы демаете, если замените кавычки на одинарные, ваш проект начнёт просто летать?
Имхо - данный вопрос сейчас становится всё менее актуальным, ибо в нормальных проектах для вывода уже давно используюся конструкции вида {varname} или <?php echo $varname;?> (надеюсь поняли о чём я).
Лучше чем заниматься этой ересью выучили бы ООП и MVC...

ntldr 09.01.2009 19:59

Цитата:

Сообщение от SMiX
Глупо так делать выводы. Как минимум, нужно произвести этот тест на нескольких машинах и не 1 раз. Также стоит выделить расчёт каждого варианта в отдельный скрипт.
На моём сервере к примеру 2 вариант в 2 раза "быстрее" первого.

мое мнение - в программирование на скриптовых языках, так заморачиваться на оптимизации не стоит, потому что подобные недочеты - проблема интерпретатора

SMiX 09.01.2009 20:09

По поводу кавычек да, заморачиваться совсем не стоит.
Я просто прокомментировал заблуждение oRb'a )

bombeg 12.01.2009 10:04

Цитата:

Сообщение от Pashkela
Я бы так сделал:

тебе надо вывести строку "я-хакир"
PHP код:

$xak 'хак';
echo 
"я-$xakир"


Молодец! Ты наверное крутой пхп-кодер, ведь так? Зачем ты пишешь то, чего не знаешь? Знаешь что выведит твой код? НИЧЕГО. А почему? Потому что переменную $xakир ты не определил. И это все написано в базовом курсе, которые ты великий хакер пропустил, когда тут писал ерунду.
http://ru2.php.net/manual/ru/language.variables.basics.php

Цитата:

И читабельно, и работает быстрее, чем вариации типа:
ты слепой, если {$array[0]} для тебя тяжело прочитать. Используй нормальные редакторы для нормального кода.

Pashkela 12.01.2009 13:49

ыыы, пьяный наверное был, на самом деле всегда так делаю:)

PHP код:

$xak 'хак'
echo 
'я-'.$xak.'ир'

А {} свои несчастные сами юзайте:)

bombeg 12.01.2009 14:03

покажи кусок своего кода.

Pashkela 12.01.2009 14:05

http://forum.antichat.ru/showpost.php?p=1021681&postcount=574

А так лезь в "php для новичков" и гни пальцы там, бобмик:)

bombeg 12.01.2009 14:09

я просил код, а не программу.

Pashkela 12.01.2009 14:11

Вот ты торопишь меня, даже подумать не даешь:

PHP код:

<?php
echo 'Hello world';
?>

Это моя последняя разработка. А так пока учусь, конечно

bombeg 12.01.2009 14:14

http://forum.antichat.ru/showthread.php?p=1052301#post1052301
А ну тут все понятно. Конечно надо сначала создать кучу ненужный переменных, которые уже есть, потом возиться с кавычками. дальше тебе я ничего не напишу, и ты не пиши никаких советов.
Цитата:

Это моя последняя разработка.
Кто тут еще пальцы гнет, мистер вселенная.

Pashkela 12.01.2009 14:20

Во-первых не очень понятно, почему это я вообще там "великий хакер" или "мистер вселенная" - вы голубой? Или просто мой тайный поклонник? Спасибо, но я преподчитаю девушек:)

А во вторых подберите слюньки и покажите мне СВОИ наработки, вот я и рассмотрю, кто ты и что ты. Только СВОИ, понимать буквально

bombeg 12.01.2009 14:22

какой смысл показывать что-то человеку, который не знает основ языка и чего-то еще советует.

Pashkela 12.01.2009 14:25

Понятно. Тролль на сайте. И ахтунг к тому же:) До свидос

CrazyNight 12.01.2009 21:25

Одинарные кавычки безусловно работают быстрее двойных.
А двойные с внутристроковыми переменными внутри - вообще полный бред, не знаю кто в здравом уме будет использовать такую технику на более-менее серьёзных проектах.

Уже сколько статей на эту тему написано, сколько тестов - и всё равно откуда-то берутся люди, которые будут всё на свете отрицать, забивая на базовые принципы интерпретируемых языков.

nerezus 12.01.2009 22:36

Цитата:

А двойные с внутристроковыми переменными внутри - вообще полный бред, не знаю кто в здравом уме будет использовать такую технику на более-менее серьёзных проектах.
Я буду. Как и люди с мозгами.
Такой код лучше читается, а скорость та же.
Так сложно понять?


Цитата:

Уже сколько статей на эту тему написано, сколько тестов - и всё равно откуда-то берутся люди, которые будут всё на свете отрицать, забивая на базовые принципы интерпретируемых языков.
Впринципе фраза верная, только вот вывод другой:
Скорость одинаковая.
А код читается лучше красивый.

AkyHa_MaTaTa 12.01.2009 23:10

согласен с nerezus, CrazyNight возьми любой "более-менее серьёзных проект" и убедись в том что там используються внутристроковые переменные. Если на то пошло то код с использованием ООП будет проигровать по быстродействию коду с использыванием процедурного подхода, (ну не всегда, но все же) так почему "более-менее серьёзные" программисты используют подход с ООП в своих проектах (ну не всегда, но все же) - да потому что гораздо проше работать именно с обьектами, особено если количество строк давно перевалило за сотню-другую, чем е**ться с таким понятием как быстродействие, особенно в php. Php в принципе не предназначен для систем реального времени, и не используеться, например в системах управления АЭС,он прекрасно справляеться с теми задачами которые на него возложены.ИМХО.

.:EnoT:. 12.01.2009 23:21

Ну если уж говорить о читабельности, то даже при стандартной подсветке PHP, переменные, вынесенные за кавычки сразу бросаются в глаза, нежели внутри кавычек.
PHP код:

echo "текст текст $str текст текст";
echo 
'текст текст '.$str.' текст текст'

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


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

CrazyNight 12.01.2009 23:40

Цитата:

Сообщение от nerezus
Я буду. Как и люди с мозгами.
Такой код лучше читается, а скорость та же.
Так сложно понять?


Впринципе фраза верная, только вот вывод другой:
Скорость одинаковая.
А код читается лучше красивый.

Скорость одинаковая?
Терпения на вас не хватает...

Всё, да-да, одинаковая, весь интернет с его тестами и просто цикл с миллионом итераций врут.

Да и логика врёт, говорящая что двойные кавычки, в которых интерпретатор всегда ищет переменные и спец.символы, не могут работать с такой же скорость, как одинарные, которые интерпретатор всегда принимает как есть.

Не дай бог когда-нибудь с такими "программистами" работать вместе прийдётся.

PS. Минусуй сколько влезет, гуру :-)

nerezus 12.01.2009 23:50

Цитата:

особено если количество строк давно перевалило за сотню-другую
Особенно если это десятки тысяч строк(в текущем проекте столько).

Цитата:

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

Просто используй нормальные IDE. Если ты используешь блокнот - то это ТВОИ проблемы.

Цитата:

Всё, да-да, одинаковая, весь интернет с его тестами и просто цикл с миллионом итераций врут.
Это синтетический тест. На реальных одинаковая.

Цитата:

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

ntldr 12.01.2009 23:52

Цитата:

Сообщение от CrazyNight
Скорость одинаковая?
Терпения на вас не хватает...

Всё, да-да, одинаковая, весь интернет с его тестами и просто цикл с миллионом итераций врут.

Да и логика врёт, говорящая что двойные кавычки, в которых интерпретатор всегда ищет переменные и спец.символы, не могут работать с такой же скорость, как одинарные, которые интерпретатор всегда принимает как есть.

Не дай бог когда-нибудь с такими "программистами" работать вместе прийдётся.

PS. Минусуй сколько влезет, гуру :-)

разница всеравно не заметна. ты думаешь, человечество придумало к примеру ООП, чтобы работало быстрее? а вот и нет. в пхп скриптах на первом месте удобочитаемость, а не скорость.

PS. ты гик


Время: 19:15