Стиль написания нативных SQL-запросов?

На новом проекте встретил такой стиль SQL-запросов. Коллега, привык писать такие запросы. Я же привык использовать форматированный стиль с двойными кавычками. Хочу услышать мнение сообщества по поводу одного и другого подхода. Спасибо.

Первый:

class SomeClass<br>
{<br>
	...<br>
	private function getErrorCodes() {<br>
		$query = <<<SQL<br>
SELECT<br>
	`code`<br>
FROM `table`<br>
...<br>
SQL;<br>
		return DB->fetch_column($query);<br>
	}<br>
	...<br>
}<br>




Второй:

class SomeClass<br>
{<br>
	...<br>
	private function getErrorCodes() {<br>
		$query = "SELECT<br>
					`code`<br>
				FROM<br>
					`table`<br>
				...";<br>
		return DB->fetch_column($query);<br>
	}<br>
	...<br>
}<br>
  • Вопрос задан
  • 6070 просмотров
Пригласить эксперта
Ответы на вопрос 7
@Hint
Если выбирать, то вариант №3:
return DB->fetch_column('SELECT code FROM table ...');


1. Не пойму, в чем может быть плюс here-строки.
2. Почему двойные кавычки вместо апострофов? Вы туда переменные вставляете? Если да, то ваш вариант заведомо ужасен. Используйте хотя бы pdo с плейсхолдерами.
Ответ написан
hlx
@hlx
$query = '
   SELECT
       code
   FROM
        table
   WHERE
        id = ?';


использует второй вариант и начинайте с новой строки (Будет почти тоже самое что и 1-ый вариант).

+ используйте одинарные кавычки
+ используйте плейсхолдеры
Ответ написан
ixSci
@ixSci
Я не PHPист, но первый вариант выглядит убого. По крайней мере с подсветкой хабра. Да и приклеенный запрос к стенке, тогда как всё остальное сделано с отступами, выглядит не логично.
Ответ написан
Комментировать
taliban
@taliban
php программист
Какая вообще разница? И там и там текст, и там и там на выходе получается валидный sql запрос который выполняется. Вообще не вижу никакой разницы.
Ответ написан
Если бы PHP умел бы закрывать here/newdoc не с начала строки, то выбрал бы первый вариант для себя, а так нарушается логика отступов, которую я очень люблю в том числе и при смешивании языков, без чего редкое приложение на PHP обходится. Сам использую вариант с конкатенацией.
Ответ написан
Комментировать
Sorbing
@Sorbing Автор вопроса
Основная проблема в том, что 2 разработчика с разными восприятием красоты кода работают над одним проектом. И нужно найти общий «знаменатель». В Большей части проекта (если не весь проект) написан по 2-му варианту с запросом в HERE строке — мне режет глаз, а коллега так привык. Не тяну одеяло на себя, но нужно оговорить единый стиль. Хотя, как заметил, Hint — лучше отрефакторить проект с использованием PDO.
Ответ написан
Комментировать
patashnik
@patashnik
Любые sql-запросы — это строки. Поэтому легче было бы форматировать их так, как форматируются строки у вас в проекте. Один из популярных вариантов такой

class SomeClass
{
    ...
    private function getErrorCodes() {
        $query = "SELECT"
            . "`code` "
            . "FROM "
            . "`table` "
            . "WHERE ...";
        return DB->fetch_column($query);
    }
    ...
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы