Automatické generování entitních tříd z databáze
- Tharos
- Člen | 1030
Ubastlil jsem si před pár dny skromný nástroj pro automatické generování entitních tříd z databázových tabulek. Napadlo mě, že by se to možná mohlo hodit i někomu dalšímu, ale než si dám tu práci s dokumentací a nahráním někam, radši se ptám :). Dost možná jsem totiž exot a podobný nástroj nikomu jinému k ničemu není, protože: (používá ORM, kde tohle vůbec nemusí řešit|má už podobný nástroj dávno napsaný|rád to píše ručně|atd|atd).
O co přesně jde… Pokud je váš model typu Entity-Repository-Mapper
a nepoužíváte žádné sofistikované ORM, musíte si toho poměrně dost
psát ručně. Nejukecanější bývají entity. Je k nezaplacení, pokud jsou
entity konzistentní a nedají se zvenku (samozřejmě omylem)
nijak nabourat. Docílit této konzistence znamená učinit jejich atributy
striktně privátní a zejména v setterech validovat vše, co jen validovat
lze a má smysl (nebývá toho málo). Což znamená napsat tuny kódu –
anebo nastavit generátor a stisknout v prohlížeči F5
.
Z takovéto tabulky se vygeneruje takováto třída. Celé udělátko je snadno modifikovatelné, rozšiřitelné a už v současné verzi konfigurovatelné přes INI soubor, ve kterém se momentálně nastavuje:
- připojení k databázi a název tabulky, která se má zpracovávat
- zda generovat konstruktor
- zda generovat gettery
- zda generovat settery
- zda generovat nejdříve všechny gettery a pak všechny settery, anebo zda zachovávat páry u sebe
- zda striktně kontrolovat typy (pokud je setteru předán špatný typ, vyhodí se výjimka), anebo dodanou hodnotu pouze přetypovávat
- zda přetypovávat u getterů
Co na to říkáte, mám to někam dát? Jinak mě napadlo, že dalším krokem by mohlo být ono automatické generování formulářů. Vzhledem k tomu, jak je to navržené, by to nebylo až tak složité k dodělání.
- Tharos
- Člen | 1030
Jeden člověk tu projevil zájem, a tak jsem sepsal alespoň minimální dokumentaci (viz readme.txt) a umístil verzi 0.9 nouzově sem.
- Tharos
- Člen | 1030
Parsuju, protože já nesnáším, že pro nativní parser je všechno string :) (vadí mi v podstatě tohle). Jestli mám v PHP opravdu něco problém přijmout za své, tak je to ta typová benevolence. Úplně nejradši bych v PHP 5.4 jako hlavní novinku viděl striktní typovost jako v C#/Javě a spol. :) Prostě pořádek musí být. :)
Edit: Ten regulár ale není z mojí hlavy, vlastně bylo napsání celého toho parseru otázkou pár minut a chtěl jsem vyzkoušet, jak to bude fungovat. Výkonem na tom bude výrazně hůře než nativní parser.
Editoval Tharos (9. 5. 2011 16:44)