На сколько грамотно использовать обёртку работы с БД в PHP

123 4
Sanu0074
На сайте с 31.08.2012
Offline
110
1291

С БД очень удобно работать с помощью вшитой в PHP - PDO, но работу с ней можно еще более упростить, написав свою обёртку.

Например, для того чтобы сократить код и некоторые запросы можно было делать одной коротенькой строчкой, а не писать что то вроде:

$q=$dbh->prepare("SELECT FROM table WHERE ........");

$q->execute(array("params"));
$arr=$q->fetchAll();

А делать просто, напиав класс который позволит делать так:

$table=new DBase("table");

$arr=$table->select(array("fields"),"conditioin",array("params"));

Таким образом уже в $arr - есть все что надо.

Основной плюс такого подхода, что в такой класс DBase можно натыкать кучу разных полезных методов, например таких как в есть в Yii - selectByPK(), и пр. что только придет в голову.

Но если использовать такой класс повсюду в своем проекте, это сильно нагрузит сервер?

И вообще, что скажете об этой идее?

Нужны ваши мнения и советы....

B1
На сайте с 13.12.2012
Offline
28
#1

под свои специфические задачи почему бы и нет, но опять таки велосипед...

проще под свои фичи расширить класс велосипеда с помощью extends чем писать с ноля.

п.с. на мой взгляд есть хороший велик "ADOdb" называется.

TF-Studio
На сайте с 17.08.2010
Offline
334
#2

Вот пример, их очень много.

Курите в сторону конструкторов запросов


$p = Yii::app()->db
->createCommand()
->select ('id, count(*)')
->from ('page')
->where (array('in', 'id', $ids))
->group('id')
->queryAll();

Именно это - не сильно нагружает сервер

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3
->where (array('in', 'id', $ids))

Чтоб я умер в такой хрени разбираться.

---------- Добавлено 08.11.2013 в 14:52 ----------

Например, для того чтобы сократить код

Типа фейшунист?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
C
На сайте с 04.02.2005
Offline
291
#4
Чтоб я умер в такой хрени разбираться.

100500

Смотришь в книгу, видишь...

А если там еще и джойны нужны...

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#5

Вы знаете SQL наизусть? Вы умеете составлять сложные запросы и представляете в голове все выборки?

Не беда. Вам теперь нужно изучить "1000" фреимворков и классов. В каждом из которых разработчик считает себя умнее ВСЕХ на СВЕТЕ!!! И только ОН ОДИН!!! великий сделал так всё уникально и так всё удобно, что все 1000 остальных просто в подмётки не годятся. И так думает КАЖДЫЙ из 1000.

B1
На сайте с 13.12.2012
Offline
28
#6
TF-Studio:

$p = Yii::app()->db
->createCommand()
->select ('id, count(*)')
->from ('page')
->where (array('in', 'id', $ids))
->group('id')
->queryAll();

ручки не устают подобное писать?

Solmyr
На сайте с 10.09.2007
Offline
501
#7

Нужна своя обертка, которая умеет делать то что нужно и не умеет то что не нужно. Расширяя чужие обертки - вы плодите лишний код и замедляете быстродействие.

freezebreeze
На сайте с 31.10.2013
Offline
9
#8

А просто mysql_query() чем неугодно?

Если программист не может составить запрос в БД = грош цена ему.

Верить никому нельзя. Мне — можно.
Solmyr
На сайте с 10.09.2007
Offline
501
#9
freezebreeze:
А просто mysql_query() чем неугодно?

Много букв писать надо.

Сравните:


$res = mysql_query("SELECT * FROM the_table WHERE id=715");
$row = mysql_fetch_assoc($res);

и


$row = $db->row('the_table',715);

В случае инсерта разница еще более очевидна.

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

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#10
Много букв писать надо.

Да зачем их писать?! Ctrl+C и Ctrl+V

---------- Добавлено 08.11.2013 в 15:18 ----------

Сравниваю.

$res = mysql_query("SELECT * FROM the_table WHERE id=715");
$row = mysql_fetch_assoc($res);

Отлично читаемый код. Всё понятно и можно вносить изменения. Рублей 150 за поправку запроса или вообще бесплатно, если добавить что-то чисто через аську.

$row = $db->row('the_table',715);

Не понятное говно, откуда и что берётся. Без изучения класса и документации не поправить запрос. 20-40$ за поправку кода.

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий