За последние 24 часа нас посетили 18764 программиста и 1707 роботов. Сейчас ищут 885 программистов ...

Подстановка переменной или конкатенация?

Тема в разделе "Прочее", создана пользователем Mr. T, 25 ноя 2011.

  1. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    День добрый, перечитываю "Стандарт кодирования на PHP в Zend Framework'е". В частности, решил сделать эксперимент на тему "Что лучше: подстановка переменной или конкатенация?"
    PHP:
    1. <?php
    2. $var = 'World';
    3. $time = microtime (true);
    4. for ($i = 0; $i < 10000000; $i++) {
    5.     $string = "Hello, {$var}!";
    6. }
    7. echo microtime (true) - $time;
    8. echo '<br>';
    9. $time = microtime (true);
    10. for ($i = 0; $i < 10000000; $i++) {
    11.     $string = 'Hello, ' . $var . '!';
    12. }
    13. echo microtime (true) - $time;
    . Результаты оказались примерно одинаковы. Сам я предпочитаю подстановку не использовать, а конкатенацию. У кого какое мнение по этому поводу. Все-таки как лучше? :)
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    по идее конкатенация лучше - более гибко, однако я больше предпочитаю подстановку - смотрится в строке симпатичнее :)

    PHP:
    1. <?php $query = "SELECT * FROM {$table} WHERE id={$id}"; ?>
     
  3. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Gromo, в запросах поддерживаю, ибо когда есть запрос на строчек пять, к примеру, то читабельность его очень падает. Я бы сказал даже, что если в строке производится массовая подстановка, то конкатенация будет нарушать читабельность кода и вероятно в таких случаях уместно использовать именно подстановку. Если посмотреть в строну PDO, фреймворков, то там в тех же запросах к БД, зачастую, подстановка в явном виде будет отсутствовать из-за подготовки запросов, если я правильно понял...
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Mr. T

    Если работаешь в команде - используй то, что использует команда
    Если работаешь сам - то по барабану, что ты используешь :)
     
  5. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    tommyangelo, я довольно педантичный, люблю придерживаться стандартов :)
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    в каждой команде свой стандарт.
     
  7. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Mr. T
    я использую и подстановку, и конкатенацию - в зависимости от того, что мне нужно получить.
    необходимость производить конкатенацию возникает в случаях, когда используются выражения или функции пхп - там уже подстановкой не обойтись :(

    с SQL запросами немного проще - я использую свою библиотеку для работы с БД, где в запросе подаются данные в виде $query = "SELECT * FROM {table} WHERE id={id}"; и затем уже подаю ассоциативный массив что на что заменять; а данные экранируются автоматически внутри запроса.