SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.01.2008 20:07:21

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Ув. Админы, хотелось бы узнать ваше мнение

о библиотеке DbSimple

Что в ней хорошего?
Что в ней плохого?

И вообще - стоит ли использовать?

http://dklab.ru/lib/DbSimple/manual.html

Неактивен

 

#2 19.01.2008 00:34:44

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Ув. Админы, хотелось бы узнать ваше мнение

Выглядит она хорошо, листинг простой и читаемый. Пожалуй, это все, что я могу
сказать о ней хорошего.

Теперь о плохом. Плохая осмысленность. С одной стороны, библиотека призвана
абстрагировать нас от конкретной БД, но

Обращаю особое внимание на то, что DbSimple намеренно не занимается
«выравниваниием диалектов» SQL в различных СУБД"

.
Возникает законный вопрос - зачем мне использовать библиотеку абстрагирования,
если она не выполняет своей роли?

Если же не абстрагироваться от реализации, то, разумеется, родные функции mysql
будут работать быстрее, т.к. в конечном итоге любая библиотека сводится к ним.

Стоит ли использовать - сложный вопрос. Я бы не стал, просто потому что мне проще
написать

mysql_connect('host', 'user', 'password');

вместо

$DB = DbSimple_Generic::connect("mysql://user:password@host/db");

Наверное, это дело привычки. Скорее всего, автор библиотеки сталкивался с каким-то
кругом проблем, которые эта библиотека решила, потом ее обобщил, но вот реальные
цели библиотеки написать постеснялся.

P.S. Разумеется, это лично мое мнение smile

Неактивен

 

#3 19.01.2008 01:00:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Ув. Админы, хотелось бы узнать ваше мнение

Сейчас вот еще смотрю ее код - в принципе если не обращать внимания
на псевдомногобазовость - в ней есть неплохая функциональность, которую
(если Вам она нужна, конечно) действительно легко использовать.

Правда, тут мы упираемся опять в философский спор на тему "что же нужно
обычному человеку от базы данных" smile Например, функциональность
"кэширование ответа" в PHP я считаю не только ненужной, но и вредной -
PHP ест память на данные, в то время как с кэшированием ответов отлично
справляется и сам MySQL... А placeholders, с другой стороны, - просто отличный
код.

Из этой библиотеки, пожалуй, стоит выдрать код для placeholders (кстати,
какая лицензия у библиотеки?) и использовать его smile

Неактивен

 

#4 19.01.2008 08:15:55

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: Ув. Админы, хотелось бы узнать ваше мнение

ну к БД подключаещся один раз. в начале.

$setting['dbHost'] = "localhost";
$setting['dbUser'] = "username";
$setting['dbPass'] = "password";
$setting['dbName'] = "databasename";
$setting['dbPrefix'] = "table_"

а потом код выглядит примерно вот так:
$DB->query('INSERT INTO ?_firma (name, vid, url, email, text, keywords, createdatetime, hide, uniq_id) VALUES
               (?,?,?,?,?,?,?,?,?d)',
               $_POST['name'], $_POST['vid'], $_POST['url'], $_POST['email'], stripslashes($_POST['text']), $_POST['keywords'], $datetime, $hide, $_POST['uniqid']);

или так

$DB->query('UPDATE ?_firma SET
            name=?, vid=?, url=?, email=?, text=?, keywords=?, editdatetime=?, hide=?
            WHERE id=?',
            $_POST['name'], $_POST['vid'], $_POST['url'], $_POST['email'], stripslashes($_POST['text']), $_POST['keywords'], $datetime, $hide, $_POST['id']);

вопрос остался: стоит использовать или нет?

Неактивен

 

#5 19.01.2008 17:32:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Ув. Админы, хотелось бы узнать ваше мнение

А почему Вы используете strip_slashes только над текстом? У остальных полей
тоже есть добавления кавычек ведь, нет?

Хитрость в том, что DB->query сделает addslashes автоматически. Т.е. по сути
Вы делаете много лишних действий.

Использовать или нет - решайте сами, в таком виде код выглядит достаточно просто.

Я знаю, что мне не нравится. Библиотека пытается привить PHP другой стиль
мышления. Тот, к которому я не привык. Лично я PHP не люблю вообще, поэтому,
наверное, скептически отношусь и к библиотекам "улучшающим" его.

Если бы я писал код на PHP (мне повезло, сейчас за меня на PHP пишут другие люди wink),
я бы, наверное, сделал функцию mysql_query_ph ($query, $p1, $p2, ...), которая делает
одну подстановку в placeholders и запускает mysql_query над полученным выражением.

Неактивен

 

#6 19.01.2008 18:48:29

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Ув. Админы, хотелось бы узнать ваше мнение

У меня вообще такое впечатление, что от использования подобных вещей программист, скорее всего, ничего не проигрывает, но и ничего не выигрывает (я лично обхожусь стандартным набором функций PHP).

Немного удобнее то, что не нужно беспокоиться о безопасности входных параметров, т.к. экранирование, как я понял, встроено в работу библиотеки (метод escape()); ну и еще строки в кавычках необязательно писать - это, пожалуй, достаточно удобно.
Однако, мне все же кажется, что большого выигрыша тут все же не получится.
Тот же код без использования библиотеки можно написать так:

$P = array_map('mysql_escape_string', $_POST);
$sql = "INSERT INTO table_firma (name, vid, url, email, text, keywords, createdatetime, hide, uniq_id) VALUES ('$P[vid]', $P[vid], ... )";
mysql_query($sql);

Согласитесь, разница не очень большая.
Кроме того, часто бывает удобно вытащить все операции с  БД в отдельные небольшие функции; и даже если в этих функциях будет на пару строк меньше, отца русской демократии это не спасет.

Впрочем, есть немало моментов довольно приятных, поэтому если Вы уже к этой библиотеке привыкли, то Вам вполне может быть удобно с ней работать.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson