Направи си сам ActiveRecordв PHP
Добър ден! Работя върху уеб проект X. Проектът е голям, сложен и обещаващ. Но, както при всеки друг проект, има много код, написан набързо с отметка „Ще го поправя някой ден“.
Време е да се поправи.
Четейки друго ръководство, открих шаблона за дизайн на Active Record. Проста молба към Google и сега приятел на Wikipedia разказа накратко и ясно за всичко (https://ru.wikipedia.org/wiki/ActiveRecord). Значението на шаблона е просто: за работа с таблици в базата данни беше решено да се създаде специален клас, който да изпълнява всички основни действия (CRUD). Това е всичко, от което се нуждаете, за да се свържете: поставете го в масива $dbConfig (ще има 5 елемента): host, user, pass, db, table.
Оставете функцията setConfigDB да попълни $dbConfig с желаните стойности.
Сега нека създадем метод за свързване към база данни:
Основното нещо, което трябва да запомните е, че тук масивите се предават като параметри. Foreach работи с тях и без него е проблематично да се създаде заявка с множество полета и съответни стойности. Параметърът $key приема имената на полетата, параметърът $value приема стойностите, които трябва да бъдат записани в съответните полета. Във функцията има два цикъла, първо записваме всички полета, а след това всички стойности. Използваме стандартните функции на PHP, за да получим низа, от който се нуждаем. Накрая се свързваме с базата данни и изпълняваме заявката. Връзката с базата данни е скрита, така че програмистът предава само необходимата информация на метода.
За да прочетем данните и таблицата, ще използваме двете функции selectAll() и select($fields). По смисъл те могат да се комбинират в едно, но всъщност е по-лесно да се създадат две.
Тъй като командата SELECT ще ни върне резултата, в замяна поставяме $result =mysql_query($query); Следващо изтриване.
Методът е еднократен. Едно повикване — една линия се изтрива. Известно е, че командата DELETE връща броя на изтритите редове, за удобство ще ги върнем $result = mysql_query($query);. Сега нека актуализираме нашите записи в таблицата:
Функцията съдържа 4 входни параметъра $key, $value, $where_key, $where_value. Може да изглежда, че има твърде много от тях, но от друга страна операторът UPDATE е доста многословен.
И така, $key=$value е това, което поставяме на мястото на стария запис, а $where_key и $where_value са мястото, където търсим. Тоест: намираме ред с полето $where_key, чиято стойност е равна на $where_value, в него записваме стойността на $value в полето $key. Изглежда трудно, но ако прочетете командата в SQL, тогава веднага става ясно какво е какво. Класът е готов, сега нека работим с екземпляра:
Нека създадем нов обект, напишете всичко необходимо за по-нататъшна работа:
След това вмъкнете запис в таблицата:
Не забравяйте, че масивите се предават като параметри на метода за вмъкване. Нека сега да видим какво имаме в таблицата:
Тук специално не съм търсил и измислил начин за извеждане на данни, тъй като основната задача на нашия клас е работата с базата данни. Самият програмист ще формира входните данни според нуждите си, добре, или ще направи отделен клас за това. Сега нека изберем конкретни полета. В моя случай едно.
В общи линии всичко. Оказа се това, което бих искал да считам за приемливо за работа. Дали този клас принадлежи към реалния Active Record или не, не знам. Но съм сигурен, че в такава проста, а понякога дори непретенциозна реализация, тя може да се използва в прости проекти. И ако работите усилено върху него, тогава дори и в трудните ще има място за него.