GENiE – Nejen ORM pro PHP

GENiE je systém pro transformaci (parsování a generování) textu. Hlavní jeho současnou aplikací je generování kódu pro objektově relační mapování (ORM) v PHP.
Tvorba webové aplikace
Představte si, že jste programátor a potřebujete dát dohromady webovou aplikaci.
Měli by jste: navrhnout a nakreslit datový model, zdokumentovat jednotlivé entity, jejich pole a vztahy, pro pole určit omezení obsahu, pro model vytvořit fyzické schéma podporovaných RDBMS, napsat kód pro manipulaci s daty v databázi, zpracovat požadavky na uživatelské rozhraní, vymyslet gray screeny, naprogramovat uživatelské rozhraní, udělat ověřování uživatelem zadaných hodnot ve formulářích, přeložit popisky a nápovědu k atributům entit jazyků podporovaných aplikací, atd.
Navíc při jakékoliv změně datového modelu, například při rozšiřování aplikace, je nutné vše znovu projít a provést potřebné změny.
To zní jako spousta práce. A také to spousta práce je. Náplň práce programátora je eliminovat nudnou a na chyby náchylnou opakující se činnost. Nejen pro svého zákazníka, ale i pro sebe.
Myšlenka GENiE
Hlavní myšlenkou GENiE je centralizace popisu nějakého komplexního problému do jednoho člověkem čitelného a psatelného textového souboru. Takto může být popsán například datový model aplikace v jazyce DM.
Z textového popisu GENiE generuje vše co je možné: implementaci řešení problému, dokumentaci, snadno zpracovatelný XML popis vstupu, atp.
Textové soubory na rozdíl od grafických nástrojů mají mnohé výhody i některé nevýhody:
- snadné sledování změn a slučování pomocí SCM
- možnost využití pokročilých vlastností textového editoru, například makra, copy & paste, atd.
- snadné hromadné úpravy pomocí textového editoru
- nejste omezeni schopnostmi a (dis)komfortem grafického nástroje
- můžete pracovat odkudkoliv, i když zrovna k potřebnému grafickému nástroji nemáte přístup
- nutnost naučit se formát textového souboru (jednorázové náklady)
- editace textu může být nepohodlná, pokud máte převážně vizuální představivost
Usnadnění vývoje webové aplikace
Z popisu datového modelu se automaticky generuje:
- obrázek datového modelu v několika úrovních detailů s podporou seskupování podobných entit.
- kód schématu databáze pro různé databázové systémy:, PostgreSQL, SQLite a MySQL.
- abstrakci přístupu k DB buď pomocí DBO, nebo pomocí Doctrine ORM.
- přehlednou dokumentaci seskupující na jedno místo vše co je uvedené výše
- introspekční metadata v XML
použitelná nástroji vytvořenými uživatelem GENiE, např.:
- jako zdroj řetězců pro internacionalizaci systému (překlad do cizích jazyků)
Program GENiE je použitelný z příkazové řádky a díky tomu umožňuje snadnou automatizaci činností pomocí sestavovacího a nasazovacího systému webové aplikace. Zároveň je k dispozici grafická aplikace pro usnadnění vizualizace modelu, při jeho návrhu.
Systém lze snadno rozšiřovat. Jedním příkladem takového rozšíření, je vytáhnutí přeložitelných textů z reprezentace modelu v XML. Pokud váš systém používá gettext pak jsou tyto texty mohou překladatelé využít pro rychlou internacionalizaci aplikace. Výsledek internacionalizace aplikace, provedené tímto procesem, můžete vidět v akci v administračním rozhraní megous.com.
Je možné zpracovat libovolně komplikované modely. Příkladem komplikovanější aplikace může být například model sledování afghánských dešťů, který využívá funkci seskupení entit pro zpřehlednění diagramu.
Prohlédněte si několik dalších obrázků modelů, které jsem pomocí GENiE napsal.
DBO – Databázové objekty
Součástí GENiE je implementace objektově relačního mapování (ORM) v PHP nazvaná DBO, která usnadňuje práci s daty v databázi. DBO implementuje následující vlastnosti:
- přidávání, odstraňování a úprava záznamů
- transparentní práce s 1:N, N:1 a N:M vztahy mezi záznamy
- silné (agregátní) a volné vztahy mezi entitami
- rekurzivní vztahy využitelné např. pro implementaci stromu kategorií produktů
- transparentní zachování arbitrárního pořadí záznamů pomocí vah
- kontroly hodnot atributů a reportování nalezených problémů
- snadná rozšiřitelnost jednotlivých tříd datových entit
- celá implementace DBO je obsažena v jednom generovaném PHP souboru
- introspekční mechanismus využitelný k automatickému generování uživatelského rozhraní
Podívejte se na ukázku použití DBO v kódu webové aplikace.
Hodnota GENiE

Hodnota GENiE v principu pramení z toho, že vytváří a vynucuje jedno centrální místo, kde je popsán datový model aplikace. Oproti na první pohled přitažlivým grafickým ER nástrojům, GENiE umožňuje snadnou správu revizí modelu pomocí vašeho oblíbeného SCM nástroje, s možností slučovat změny z více větví vývoje.
- Nemusíte kreslit obrázek modelu (ERD) a udržovat ho v souladu s realitou, při každé budoucí úpravě modelu . To šetří čas v úvodních fázích vývoje. Pokud jste někdy kreslili ERD pomocí grafického nástroje, jistě mi dáte za pravdu, že se tak dá snadno ztratit spousta hodin času. Pro úpravy detailů entit často musíte používat zdržující dialogy, při přidání nové entity je třeba přerovnat ty ostatní, atd. Kolik vývojářů si po drobných úpravách modelu vzpomene vrátit se k ERD diagramu a zaktualizovat ho? GENiE vás těchto nepříjemných povinností zbavuje.
- Pokud máte program na kreslení ER diagramů, můžete ho zahodit, pokud ho nemáte, pak si ho nemusíte ani pořizovat.
Výhody, které pocítí zákazník:
- ERD lze generovat v několika úrovních potlačení detailů a s možností vizuálně seskupit podobné entity. To usnadňuje komunikaci se zákazníkem u komplikovaných modelů. Dobrá komunikace v počátcích projektu dokáže předejít nedorozuměním a ztrátám později.
- Zákazníkovi se rozšiřuje volba, protože abstrakce přístupu k datům výrazně usnadňuje programátorovi práci s daty v databázi. Ušetřený čas může být využit na tvorbu kvalitnějšího uživatelského rozhraní, nebo rychlejšího dodání aplikace.
- Přehledná dokumentace snižuje budoucí náklady na údržbu a rozšiřování aplikace, protože programátor se dokáže rychleji seznámit s modelem a kódem aplikace.
Vyzkoušejte si sami
Tento web využívá GENiE pro přístup k databázi. Na modelu newsletteru je postaven systém novinek na úvodní stránce megous.com a generování RSS feedu.
Můžete se také podívat do administračního rozhraní, kde lze spravovat novinky a jejich kategorie a několik dalších entit na kterých je megous.com postaven.
Pomocí GENiE vyvíjím webové aplikace na míru. V přehledu mých služeb získáte další informace.
