Безкоштовна програма для складського обліку та торгівлі
[#top] Про проект Zippy склад Загальні відомості Керівництво користувача Документація розробника Модулі та розширення Інші проекти Фреймворк Zippy Библіотека ZDB База знань Zippy Note Бiблiотека для цифрового пiдпису ZDB Библиотека для доступа к БД Библиотека представляет собой, 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 . В этом случае выборка данных будет идти из представления а запись в таблцу. Метод init() используется для инициализации полей. Метод afterLoad() вызывается после загрузки содержимого из соответствующей строки таблицы БД. В данном случае преобразовывает дату в timestamp для универсальности дальнейшей работы. Оба метода необязательны. Самое важное - имена полей, к которым идет обращение при работе с экземпляром сущности должны совпадать с именами в таблице БД. Все остальное будет автоматизировано библиотекой ADODB. При сохранении данных библиотека сама определит типы полей Бд и сформирует SQL запрос с соответствующими преобразованиями. Никакого специального маппинга полей или генерации структур не нужно. Некоторые примеры работы с Entity: //загрузка пользователя. $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"); Класс сущности - обычный класс и может быть расширен любыми необходимыми методами. Например проверка юзера по логину и паролю. Зворотній зв'язок Ім'я Email Повідомлення Закрити Відправити Zippy Store © 2015-2021 | Форма зворотнього зв'язку | F.A.Q | Ми в Фейсбуці | @leonmbs