Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обертки под СУБД, немного холивара 
:(
    Опции темы
MoLeX
  Дата 7.6.2011, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Добрый день.

При разрабатывание проектов с использованием СУБД часто встает вопрос об быстром развертывание проекта на новую СУБД или драйвер (например: миграция с mysql на mysqli, или замена mysql на sqlite) без изменения основного кода. В этом нам помогают обертки, причем они довольно громоздкие:
Код

// Пример 1
function db_connect($server, $user, $passw)
{
    return mysql_connect($server, $user, $passw);    
}
..........
function db_query($sql)
{
    return mysql_query($sql);
}

// Пример 2
class DB {
    
    function connect($server, $user, $passw)
    {
        return mysql_connect($server, $user, $passw);    
    }
    ....
    function query($sql)
    {
        return mysql_query($sql);
    }
}


Что очень не удобно - тонны строк. В итоге мне это надоело использовать и решил искать альтернативу, и вроде нашел её
Код

class DB 
{
    var $driver;
    
    function __construct($driver)
    {
        $this->driver = $driver.'_';
    }
    
    function __call($func = '', $arg = '')
    {
        call_user_func_array($this->driver.$func, $arg);
    }
}

$db = new DB('mysql'); // mysqli
$link = $db->connect('127.0.0.1', 'root', 'passw');
$db->select_db('database', $link);


Что скажите?

Добавлено @ 12:50
P.S. данное решение не означает что его нужно использовать сломя голову. Тем более тесты не проведены и не понятно стоит ли такое использовать. Все чисто теоретически пока что  smile 

Это сообщение отредактировал(а) MoLeX - 7.6.2011, 13:04


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
solenko
Дата 7.6.2011, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Я так и не могу понять боязни еще пары сотен строк в проекте. А ведь все что вы получаете это экономия LOC.

Прослойки используются не только для перехода между драйверами, но и для предоставления более удобного интерфейса, восполнения возможностей, которых не хватает в каком-либо драйвере (placeholders для mysql, например), вспомогательных задач типа логгирования и профилирования.




--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 7.6.2011, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(solenko @  7.6.2011,  13:04 Найти цитируемый пост)
вспомогательных задач типа логгирования и профилирования.

Да, этого в данном способе нету. Только если расширять/добавлять новый метод query()

Добавлено через 47 секунд
Цитата(solenko @  7.6.2011,  13:04 Найти цитируемый пост)
Я так и не могу понять боязни еще пары сотен строк в проекте. А ведь все что вы получаете это экономия LOC.

это не боязнь, это безделье которое рождает подобные вещи)


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Sanchezzz
Дата 7.6.2011, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



я делал както проект полностью на mysqli но потом бац на хостинге нету mysql чтоже делать что же делать написал обертку простого mysql схожего на mysqli и не переписывал сотни кода ). 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
solenko
Дата 8.6.2011, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(Sanchezzz @  7.6.2011,  21:29 Найти цитируемый пост)
я делал както проект полностью на mysqli но потом бац на хостинге нету mysql чтоже делать что же делать написал обертку простого mysql схожего на mysqli и не переписывал сотни кода ).  

А некоторые вообще ORM используют )  
// а то чет холивара то и не получается... 


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 8.6.2011, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(solenko @  8.6.2011,  09:40 Найти цитируемый пост)
а то чет холивара то и не получается... 

есть такое)


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Sanchezzz
Дата 8.6.2011, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



не ORM меня не когда не вдохновляло а вот обертка самое то причем я на столько люблю mysqli что везде его использую )


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
solenko
Дата 8.6.2011, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(Sanchezzz @  8.6.2011,  15:07 Найти цитируемый пост)
не ORM меня не когда не вдохновляло а вот обертка самое то причем я на столько люблю mysqli что везде его использую ) 


И что, потом, при обновлении данных рыскать по коду и переписывать все запросы?


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Valinur
Дата 8.6.2011, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 21.9.2007
Где: Москва

Репутация: 4
Всего: 6



А чем PDO не устроил?
--------------------
Не бойтесь совершенства, Вы все равно его не достигнете (с) ...
PM MAIL   Вверх
solenko
Дата 9.6.2011, 07:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(Valinur @  8.6.2011,  21:36 Найти цитируемый пост)
А чем PDO не устроил?

ну, например, округлением float до не помню какого знака после запятой при бинде параметров. 


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Sanchezzz
Дата 9.6.2011, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Цитата

И что, потом, при обновлении данных рыскать по коду и переписывать все запросы? 

Ну да надо же себя чем то занять  smile 



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Sentox
Дата 10.6.2011, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(solenko @ 9.6.2011,  07:52)
Цитата(Valinur @  8.6.2011,  21:36 Найти цитируемый пост)
А чем PDO не устроил?

ну, например, округлением float до не помню какого знака после запятой при бинде параметров.

а если перегрузить метод из PDO?
PM MAIL   Вверх
eLRiz
  Дата 10.6.2011, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.5.2011
Где:

Репутация: нет
Всего: нет



Нет холивара? Пожалуйста:

Вы что так часто меняете СУБД? Каждый день переезжаете с сервера на сервер?
1) Если у Вас свой сервер, то поставить нужную СУБД не будет ни каких проблем.
2) Если у Вас хостинг и он не предоставляет популярные SQLite или MySQL, то этот хостинг попросту не нужен.

Я просто замечаю, что кое-кому делать нефиг, начинает писать много лишнего в проект. Раз пишите под несколько СУБД, сразу на разных языках пишите, вдруг на хостинге нет PHP, но есть Python или Ruby

 smile 
PM WWW   Вверх
MoLeX
Дата 10.6.2011, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(eLRiz @  10.6.2011,  08:06 Найти цитируемый пост)
Вы что так часто меняете СУБД? Каждый день переезжаете с сервера на сервер?

часто работаю с заказами, в которых заказчики сразу говорят - "мне mysql, mysqli, sqlite, etc". А ядро используется одно и то же.

Добавлено через 1 минуту и 1 секунду
Цитата(eLRiz @  10.6.2011,  08:06 Найти цитируемый пост)
Раз пишите под несколько СУБД, сразу на разных языках пишите, вдруг на хостинге нет PHP, но есть Python или Ruby

Надо SamDark'у сказать, пусть Yii переводят на эти языки


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
eLRiz
  Дата 10.6.2011, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.5.2011
Где:

Репутация: нет
Всего: нет



Цитата

часто работаю с заказами, в которых заказчики сразу говорят - "мне mysql, mysqli, sqlite, etc". А ядро используется одно и то же.


Всё равно не понимаю, зачем в одном проекте сразу всё? В разных проектах, может и нужно.
Не разу не пришлось использовать что-то отличное от MySQL. А если нравится объектный подход, то лучше использовать тогда объектно-реляционную организацию данных. Читаем: http://forum.wen.ru/?p=3&f=6&t=396249 может найдете для себя что-то  smile 
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0967 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.