80 likes | 206 Views
Ing. Jan Mittner. 4IT445 – Model. Osnova. Rozšíření modelu Vazba 1:n Vazba m:n. Vlastní knihovny. pro zajištění znovupoužitelnosti se může hodit rozšířit Zend knihovny o vlastní logiku (v adresáři library ) a teprve na bázi vlastních knihoven pak stavět modely, controllery atd.
E N D
Ing. JanMittner 4IT445 – Model
Osnova • Rozšíření modelu • Vazba 1:n • Vazba m:n
Vlastní knihovny • pro zajištění znovupoužitelnosti se může hodit rozšířit Zend knihovny o vlastní logiku (v adresáři library) a teprve na bázi vlastních knihoven pak stavět modely, controllery atd. • My_Db_Table • metoda getById() – vrácení objektu dle primárního klíče • My_Db_Table_Row • dynamické gettery / settery pro atributy objektu • inflektor pro získání názvu atributu
Servisní přístup k modelům • nová třída My_Model v rámci vlastní knihovny umožňuje servisní přístup k jednotlivým objektům modelů • slouží primárně k vytváření instancí tříd modelů vycházejících z My_Db_Table • pro každou třídu si vytvoří pouze jednu její instanci, kterou si drží v registrech a následně ji na požádání vrací • není totiž nutné vytvářet více instancí těchto modelů, jelikož nedrží svůj vnitřní stav, ale pouze nabízejí servisní přístup k využití dat z databáze • implementuje návrhový vzor singleton • využití třídy My_Model je praktikováno v rámci kontrolleru ProductController 4
Výrobce • ke každému produktu přiřadíme výrobce – vazba 1:n • DB – nová tabulka manufacturers a vazba na tabulku products • nové objekty modelů • Manufacturers – obsluha tabulky výrobců • Manufacturer – objekt reprezentující jednoho výrobce • rozšíření modelů produktů • Products – referenční mapa na objekt výrobce • Product • getManufacturer() – vrácení navázaného objektu výrobce • getFullTitle() – tvorba plného názvu objektu kombinující název výrobce • rozšíření view šablon produktů • použití metody pro plný název produktu
Kategorie produktů • projekt rozšíříme o kategorie produktů – vazba m:n – produkty mohou spadat do více kategorií • DB – nová tabulka folders a vazební tabulka products_has_folders • nové objekty modelů • Folders – obsluha tabulky kategorií produktů • Folder – objekt reprezentující jednu kategorii produktů • ProductsHasFolders – vazební objekt propojující produkty a kategorie • rozšíření modelů produktů • Product • getFolders() – seznam kategorií, do nichž je produkt přiřazen • rozšíření controlleru produktů • získání všech kategorií produktů • rozšíření view šablon produktů • index.html – výpis produktů podle kategorií • preview.html – výpis kategorií, v rámci nichž se produkt nachází
Úkoly • přidejte další entitu s vazbou na produkty • např. číselník barev, nebo související produkty • tabulka v databázi • modelové třídy • výpis ve view
Subversion • systém Subversion určený pro verzování souborů je vhodné v projektových týmech silně využívat pro zpřehlednění vývoje a sdílení kódu aplikace • je možné využít různé SVN klienty – doporučujeme TortoiseSVN a modul Subclipse v rámci Eclipse PDT • každý tým disponuje vlastním úložištěm • každý člen má přístup k týmovému úložišti • každý tým má FTP úložiště a databázi • po commitu do Subversion se změny automaticky projeví na FTP, tudíž je zde dostupná poslední funkční verze aplikace • do Subversion není vhodné commitovatdočasné soubory a Zend knihovnu – raději na tyto adresáře / soubory použít příkaz svn:ignore a nahrát je na FTP ručně • osobní i týmové přístupové údaje jsou dle vzoru viz http://4it445.vse.cz/ 8