Клас для роботи з базою даних

Відео: Відеоурок по створенню класу бази даних PHP ООП використовуючи PDO (4/4)

Клас для роботи з базою даних

Нещодавно я помітив, що в Інтернеті можна знайти величезну кількість PHP-класів для роботи з базою даних. Як завжди, вони завжди хизуються своєю функціональністю і кількістю можливостей. Я вирішив теж написати свій клас для роботи з базою даних, але пішов іншим шляхом. Я хотів зробити такий клас, щоб в ньому був той необхідний мінімум функціоналу, який тільки і потрібно. Все інше - це вже незрозумілі навороти, які використовувати, як мінімум, небезпечно.

Наводжу свій прокоментований клас для роботи з базою даних:

Відео: Пишемо клас для роботи з БД MySQL

lt ;?php
classDataBase{

privatestatic $ db =null-// Єдиний екземпляр класу, щоб не створювати безліч підключень
private $ mysqli-// Ідентифікатор з`єднання
private $ sym_query ="{?}"-// "Символ значення в запиті"

/ * Отримання екземпляра класу. Якщо він вже існує, то повертається, якщо його не було, то створюється і повертається (патерн Singleton) * /
publicstaticfunction getDB(){
if(self::$ db ==null)self::$ db =newDataBase() -
returnself::$ db-
}

/ * Private-конструктор, підключається до бази даних, що встановлює локаль і кодування з`єднання * /
privatefunction __construct(){
$ this
-gt;mysqli =new mysqli("Localhost","Root","","My_db") -
$ this
-gt;mysqli-gt;query("SET lc_time_names = `ru_RU`") -
$ this
-gt;mysqli-gt;query("SET NAMES `utf8`") -
}

/ * Допоміжний метод, який замінює "символ значення в запиті" на конкретне значення, яке проходить через "функції безпеки" * /
privatefunction getQuery($ query, $ params){
if($ params){
for($ i =0- $ i lt; count($ params) - $ i++){
$ pos
= strpos($ query, $ this-gt;sym_query) -
$ arg
=" `".$ this-gt;mysqli-gt;real_escape_string($ params[$ i])." `"-
$ query
= substr_replace($ query, $ arg, $ pos, strlen($ this-gt;sym_query)) -
}
}
return $ query-
}

/ * SELECT-метод, який повертає таблицю результатів * /
publicfunctionselect($ query, $ params =false){
$ result_set
= $ this-gt;mysqli-gt;query($ this-gt;getQuery($ query, $ params)) -
if(!$ result_set)returnfalse-
return $ this-gt;resultSetToArray($ result_set) -
}

/ * SELECT-метод, який повертає один рядок з результатом * /
publicfunction selectRow($ query, $ params =false){
$ result_set
= $ this-gt;mysqli-gt;query($ this-gt;getQuery($ query, $ params)) -
if($ result_set-gt;num_rows !=1)returnfalse-
elsereturn $ result_set-gt;fetch_assoc() -
}

/ * SELECT-метод, який повертає значення з конкретної комірки * /
publicfunction selectCell($ query, $ params =false){
$ result_set
= $ this-gt;mysqli-gt;query($ this-gt;getQuery($ query, $ params)) -
if((!$ result_set)||($ result_set-gt;num_rows !=1))returnfalse-
else{
$ arr
= array_values($ result_set-gt;fetch_assoc()) -
return $ arr[0] -
}
}

/ * НЕ-SELECT методи (INSERT, UPDATE, DELETE). Якщо запит INSERT, то повертається id останньої вставленої записи * /
publicfunction query($ query, $ params =false){
$ success
= $ this-gt;mysqli-gt;query($ this-gt;getQuery($ query, $ params)) -
if($ success){
if($ this-gt;mysqli-gt;insert_id ===0)returntrue-
elsereturn $ this-gt;mysqli-gt;insert_id-
}
elsereturnfalse-
}

/ * Перетворення result_set в двовимірний масив * /
privatefunction resultSetToArray($ result_set){
$ array
= array() -
while(($ row = $ result_set-gt;fetch_assoc())!=false){
$ array
[]= $ row-
}
return $ array-
}

/ * При знищенні об`єкта закривається з`єднання з базою даних * /
publicfunction __destruct(){
if($ this-gt;mysqli) $ this-gt;mysqli-gt;close() -
}
}
?gt;



Як бачите, немає нічого зайвого, тільки все найнеобхідніше. тепер розберемо PHP-код, який використовує даний клас:

lt ;?php
$ db
=DataBase::getDB() -// Створюємо об`єкт бази даних
$ query
="SELECT * FROM` users` WHERE `id` gt; {?} AND `online` = {?}"-
$ table
= $ db-gt;select($ query, array(10,1)) -// Запит явно повинен вивести таблицю, тому викликаємо метод select ()
$ query
="SELECT` login` FROM `users` WHERE` email` = {?} "-
$ login
= $ db-gt;selectCell($ query, array("[email protected]")) -// Запит повинен вивести конкретну осередок, тому викликаємо метод selectCell ()
?gt;



Тепер Ви розумієте, що для зручної та безпечної роботою з базою даних зовсім не потрібно бібліотека з 100 класів. Все необхідне є, і даний клас без проблем обробить будь-який запит. Єдине, що я рекомендую - це налаштування винести в окремий клас. Тобто адреса хоста, ім`я користувача, пароль, назва бази даних, кодування, локаль і "символ значення" винести в окремий клас, звідки їх зчитувати.

Відео: PHP Для початківця. Робота з Базою даних. частина 10

Ось такий нехитрий клас для роботи з базою даних я використовую в своїх проектах.

Поділися в соціальних мережах:

Схожі
Підключення до бази даних в phpПідключення до бази даних в php
Як отримати список дочірніх вузлів через domЯк отримати список дочірніх вузлів через dom
Клас для відправки e-mail на phpКлас для відправки e-mail на php
Абстрактні класи в phpАбстрактні класи в php
Метод tostring () в phpМетод tostring () в php
Reflection api. Reflectionclass.Reflection api. Reflectionclass.
Як правильно створювати структуру бази данихЯк правильно створювати структуру бази даних
Помилка max user connections в mysqlПомилка max user connections в mysql
Створення винятків в phpСтворення винятків в php
Створення движка на mvc. Починаємо роботу з базою даних.Створення движка на mvc. Починаємо роботу з базою даних.
» » Клас для роботи з базою даних