[Moscow.pm] Продолжение размышлений на тему ORM
Vladimir Timofeev
vovkasm на gmail.com
Вт Ноя 8 11:36:36 PST 2011
Здравствуйте!
8 ноября 2011 г. 18:16 пользователь Ivan Petrov
<i.petro.77.00 на gmail.com> написал:
> Заспорили мы тут с некоторыми товарищами.
...
>
> В итоге пришли вот к такому синтаксису.
>
> SELECT
> *
> FROM
> table
> WHERE
> id = <%= $id %>
>
> где $id - именованный параметр переданный запросу.
>
>
> Ну или даже так:
>
> SELECT
> % if ($type eq 'count') {
> COUNT(*) AS count
> % } else {
> *
> % }
> FROM
> table
> WHERE
> sid = 123
> % if ($filter->filter1) {
> AND field1 = <%= $filter->filter1 %>
> % }
> % if ($filter->filter2) {
> AND field2 = <%= $filter->filter2 %>
> % }
>
> Получается более изящно и сильно более гибко, однако цена этому в
> примерно в полтора-два раза бОльшее время на парсинг. Впрочем для
> сложных SQL оно сравнимо (у старого парсера оно оосло в зависимости от
> сложности, тут слабо зависит).
>
...
> Замечания, предложения крайне интересны :)
- Человек который строит запросы так, вынужден постоянно помнить про
SQL-Injection, а значит помнить про то, откуда именно берется каждый
используемый в шаблоне скаляр.
- В таком шаблоне возможно писать логику приложения, если возможно
значит обязательно это кто-то сделает (та же проблема существует с
HTML-шаблонизаторами)
- О взаимозаменяемости баз данных можно забыть
Это на вскидку, что вспомнилось, когда читал.
--
Vladimir Timofeev <vovkasm на gmail.com>
Подробная информация о списке рассылки Moscow-pm