PHP PDO mysql class vs Memcache
- 19 Листопада 2014
- Volodymyr Hodiak
- Розробка
- Адміністрування
- 5637

Вирішив поділитись драйвером, який ми використовуєм для роботи з БД MySQL. Клас є розширенням PDO і включає в себе готові функції для роботи з основними операціями CRUD. Працює по паттерну singleton. Основне завдання: зменшити кількість помилок при рутинних операціях, та зменшити кількість коду.
Підключення.
Достатньо його скопіювати в папку з класами , і якщо ви слідуєте psr-0, тоді ваш __autoload повинен його завантажити.
Налаштування з'єднання з БД.
В конструкторі класу є $_config. Його бажано замінити своїм або підставити свої значення.
Вміст конфігу зрозумілий. Думаю описувати не варто.
$_config = array( 'host' => 'localhost', 'username' => 'root', 'password' => '', 'db' => 'you db name', 'memcached' => false, 'mc_host' => 'localhost' );
Єдине якщо ви бажаєте використовувати memcache, тоді вкажіть mc_host. Якщо память використувується з локального сервера, тоді достатньо прописати localhost.
Використання.
SELECT
$db = DB::instance();
$r = $db->select("select id,name,is_folder from menu order by id asc")->all();
Результат:
Array
(
[0] => Array
(
[id] => 1
[name] => Про проект
[title] => Про проект
)
[1] => Array
(
[id] => 2
[name] => Історія
[title] => Історія
)
)
$r = $db->select("select name,is_folder from menu where id=1")->row();
Результат:
(
[name] => Про проект
[title] => Про проект
)
$r = $db->select("select name from menu where id=1")->row('name');
Результат:
Про проект
Також в метода select є другий паратетр $debug. Якщо передати true | 1 тоді перез здійсненням запиту виведеться дамп sql.
INSERT
Було:
INSERT INTO `menu` (`id`, `name`, `title`) VALUES (NULL, 'Про проект', 'Про проект');
Стало:
$db->insert(
'menu',
array(
'name' => 'Про проект',
'title'=> 'Про проект',
)
);
Імовірність помилки зменшена. І все екранується автоматично
UPDATE
UPDATE `menu` SET `title` = 'Історія 1' WHERE `menu`.`id` =2;
$db->update('menu', array('title'=> 'Історія 1'), 'id=2');
При малій кількості полів різницю не видно. Але. Якщо для прикладу в масив $_POST['menu'] внести дані для вставки з форми, тоді можна розширяти форму полями і не хвилюватись про обробник
$db->update('menu', $_POST['menu'], 'id=2');
Відчуваєте перевагу?!
DELETE
DELETE FROM `menu` WHERE `menu`.`id` = 2
$db->delete('menu', 'id=2');
$db->delete('menu', 'id=2 limit 1');
Можна було робити метод limit, але незнаю чи варто.
MEMCACHE
Якщо вам необхідно використовувати memcache, достатньо перед запитом включити наступне:
$db = DB::instance();
$db->useCache(1, 3600);
$r = $db->select("select id,name,title from menu order by id asc")->all();
або
$db = DB::instance()->useCache(1, 3600);
$r = $db->select("select id,name,title from menu order by id asc")->all();
Тобто ви можете міняти час життя кешу.
Це тільки перелік базових методів, які присутні в класі. Далі відкриваєте код і дивитесь на всі можливості.
Дякую за увагу. Кому знадобилось, не забуваємо про лайки.
І на остаток. Код на github.