Delphinum, понятно.
Ну а вобще ты зря так про билдер. Даже не для достижения абстракции - билдер хорошая штука.
Если всё обдумно сделать, то билдер может предоставить более лаконичный и выразительный синтаксис чем SQL, который будит выглядить органично с синтаксисом самого языка (в отличии от строк SQL).
Билдер можно передавать в аргументы методам/функциям или возвращать методами/функциями строя запрос в разных частях программы.
С билдером будит работать автокомплит и т.д.
# Delphinum (21.08.2013 / 18:19)
Мне для решения проблемы несовместимости диалектов SQL пришлось писать свой диалект и его парсер
Т.е вместо построителя у тебя свой псевдо-sql который ты парсишь и заменяешь некоторые инструкции в соответствии с диалектом текущей БД?
flaky, абстракция над чем? Над единственным sql-диалектом?
Тут имеет место быть Фасад, т.е сокрытие сложных конструкций и манипуляций за простым интерфейсом.
Пишем:
$db->where('id', 5)->update(['login' => 'flaky');
а внутри:
$statement = mysqli::prepare("UPDATE table SET login = ? WHERE id = ?");
$statement->bind_param("si", $login, $id);
$statement->execute();
// бла бла бла ...
ну это как раз описывает это Абстра́кция в объектно-ориентированном
программировании — это придание объекту
характеристик, которые чётко определяют его
концептуальные границы, отличая от всех
других объектов. Основная идея состоит в
том, чтобы отделить способ использования
составных объектов данных от деталей их
реализации в виде более простых объектов,
L!MP, лаконичнее SQL ничего нет. Мой PhpStorm за меня занимается автозавершением ;)
L!MP, не псевдо SQL, а полноценный SQL ) Никогда билдер не будет лучше компоновщика.
flaky, wiki нужно понимать ) То что ты назвал, это инкапсуляция )
Что лаконичнее:
select * from `users` where id > 10
или
(new Select())->all()->table('users')->where('id', '>', 10)
? ))
Delphinum, да я не спорю что тут абстракция в полном мере не присуствует, но некий небольшой слой есть.
flaky, согласен, небольшой слой чего-то здесь явно есть ;)
# Delphinum (21.08.2013 / 22:35)
L!MP, лаконичнее SQL ничего нет. Мой PhpStorm за меня занимается автозавершением ;)
L!MP, не псевдо SQL, а полноценный SQL ) Никогда билдер не будет лучше компоновщика.
В дальнейшей дискусси не вижу смысла