[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