Php пример ORM доктрина

В този пост, нека разгледаме един прост пример за използване на ORM, а именно доктрина. Ако някой не знае, на ORM (Object-релационни съответствия, обектно-релационни съответствия) - такова нещо, което осигурява класове прозрачен достъп до базата данни. Истината не е всеки клас, както и тези, които представляват описание на модела ни данни. Като цяло, аз ще трябва преди няколко години, за да научите повече за такова нещо, може би аз не се пренебрегва изучаването на PHP, и като цяло, много полезни неща, направено: D. Ако някой запознат с моделите на дизайна, може да се каже, че доктрината съответства на Active модел Record. За мой срам, аз не съм запознат с тях, така че нищо конкретно не мога още да кажа.

Между другото, ние вече засегна и въпроса за кратко ORM, но само за питона. Можете да видите за SQLAlchemy тук.

Следваща ще се разглежда като пример за модула за писане в PHP, използвайки ORM Учение за изпращане на лични съобщения между потребителите.

За да започнете да се определи масата ни. Реших да използвам само една плоча, и за всяко съобщение, както за съхранение на само един запис в базата данни. И така, полетата в таблицата ме гледат по този начин:

  • ID - ID съобщение;
  • uid_from - ID изпрати на потребителя;
  • uid_to - ID на получателя;
  • заглавие - заглавието на мнения;
  • текст - текстовото съобщение;
  • flag_unread - знамето на новото съобщение;
  • flag_del_from - подпише изходящи съобщения от дистанционното;
  • flag_del_to - знак на входящите съобщения отдалечени;
  • дата - датата на изпращане на UNIX клеймото формат;

На този етап на проекта се стигна. Сега на техническата страна на въпроса.

Тогава се създаде връзка с базата данни, както и някои параметри (за "мързелив" начин за моделиране на натоварване, за проверка на данни и т.н.). Последният ред показва къде да намеря нашата доктрина модели.

Сега в главната папка на проекта, създаване на модели и да го подаде PrivateMessage.php. Имайте предвид, че името на файла и класа, която е описана в него трябва да е същото. Ето как аз гледам на този файл:

Тук сме описали полето за идентификационен номер, защото Учение то създава автоматично, освен ако не е посочено друго първичен ключ (първичен ключ). Също така в таблицата не се посочва индекс, който не е добро. Би било хубаво да го направят до uid_from полета и uid_to малко. Но не го правят, тъй като мързелив, по някакъв начин друг път ;-).

Следващата стъпка в създаването test.php файл в главната проект, който ще бъде от основните характеристики за работа с лични съобщения и някои код за доказване на функционалността. Ето и съдържанието на този файл:

$ Conn-> експортно> exportClasses (масив ( "PrivateMessage")) - тази линия ще private_messaages маса, ако има такива, все още. Така че може да се премества в инсталационния скрипт, но тъй като не разполагаме с това, тогава ние ще го напусне.

$ Curr_uid - тази променлива се предполага, че трябва да бъдат предприети от сесията. Тъй като трябва да се поставя под сесия, аз не знам защо стойността му се придава кода 1.

GET_MESSAGE ($ номер, $ UID) - връща $ номер, $ UID се прехвърля на всички функции за тест членство съобщения до текущия потребител. За пореден път идентификатор polzovatelya трябва да бъде взето от сесията.

delete_messages ($ идентификатори, $ UID) - $ идентификатори - Съобщенията масив id'shnikov, които искате да изтриете. Изтриване на записи от базата данни, а само тези, които имат flag_del_from flag_del_to и са 0.

send_message ($ до $ заглавие, $ текстови, $ UID) - $ до - ID на получателя, $ UID - на изпращача, а другите мислят, че е ясно.

Послепис Това е първият ми опит да се направи нещо с помощта на учение.