Бібліотека для доступу до БД
Бібліотека являє собою Active Record, побудований на функціональності бібліотеки та ADODB.
Бібліотека дозволяє працювати з бізнес-сутностями, не використовуючи мапінг чи інший спосіб
ручної вказівки зв'язку полів бізнес-сутності з полями таблиці БД.
Основний репозитарій на Гітхабі
Документація по классах бібліотеки
ZDB\DB
Класс, що реалізує коннект до БД. Синглетон-обгортка для ADODB.
Для ініціализації необхідно передати параметры з'єднання .
\ZCL\DB\DB::config($host, $dbname,$dbuser,$dbpass,[$driver=mysqli]);
Отримання коннекта (для натівних запитів)
DB::getConnect();
ZDB\Entity
Основний клас бібліотеки, що є базовим для всіх Entity.
Наприклад, є таблиця користувачів
CREATE TABLE `users` (
`username` varchar(255) ,
`updated` date ,
`user_id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`user_id`)
)
Створимо клас сущності Користувач на основі класу ZDB\Entity
/**
* @table=users
* @keyfield=user_id
*/
class User extends Entity{
protected function init() {
$this->user_id = 0;
$this->updated = time();
}
protected function afterLoad() {
$this->updated = strtotime($this->updated);
}
}
Якщо у нас є перегляд для вибірки користувачів, наприклад usersview,
тоді ми вказуємо в псевдоанотаціях @view=usersview.
У цьому випадку вибірка даних буде йти з уявлення, а запис у таблиці.
//загрузка коиистувача.
$user = User::load($id);
//Зберегти з новими значеннями.
$user->username='newname';
$user->updated = time();
$user->save();
//Новий користуывя
//якщо $user->user_id дорівнює 0 створюється новий запис і полю $user->user_id
//присовюєтся значення з автоиінкрементного поля.
$user = new User();
$user->username='newname';
$user->save();
//видалення користуваяа
User::delete($id);
//знайти всіх крім адміна
$users = User::find("username <> 'admin'");
//знайти кількість користувачів
$users = User::findCnt();
//повернути назви в вигляді масива ключ-значення
// наприклад для випадаючого списку
$users = User::findArray("username","","username asc");
Клас сущностей - звичайний клас и може бути розширений
будь-якими необхідними методами. Наприклад перевірка користувача по логіну і паролю