Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

4. előadás.  Általánosan a modellről  Table Data Gateway Pattern  A modellosztályok áttekintése  Zend_Db modellek nélkül  Controllerek ismét  Action-ök,

Hasonló előadás


Az előadások a következő témára: "4. előadás.  Általánosan a modellről  Table Data Gateway Pattern  A modellosztályok áttekintése  Zend_Db modellek nélkül  Controllerek ismét  Action-ök,"— Előadás másolata:

1 4. előadás

2  Általánosan a modellről  Table Data Gateway Pattern  A modellosztályok áttekintése  Zend_Db modellek nélkül  Controllerek ismét  Action-ök, és más metódusok  M-V-C együttműködése

3  A modell mindig az üzleti logikát, az adathalmazokat jelenti egy alkalmazás esetén. Webes alkalmazásoknál ez leginkább a relációs adatbázisokat jelenti, de nem kizárólag.

4  Ne közvetlenül nyúljunk az adatbázishoz  Legyen egy elérési réteg, amin keresztülmegy minden művelet  Tábla átjáró, Sor átjáró  programozói szemmel ez 2 db osztályt jelent, egyet a táblának, egyet a tábla egy rekordjának Zend_Db_* : Zend_Db_Table_Abstract, Zend_Db_Table_Row, Zend_Db_Table_Rowset

5  Ha a táblán egy lekérdezést hajtunk végre, rekordok halmazát kapjuk eredményül: Zend_Db_Table_Rowset típusú objektumot, amit bejárhatunk, hogy hozzáférjünk az egyes rekordokhoz mint Zend_Db_Table_Row objektum  A Rowset-et nem sűrűn kell származtatni, mert minden, amire szükségünk lehet előre le van implementálva benne  A táblákhoz és a rekordokhoz viszont mindig saját osztály írása (2 file a models mappában táblánként)

6

7  Elnevezési konvenciók (tábla, modell, sormodell)  Protected attribútumok segítségével megadjuk az osztály fontosabb tulajdonságait: ◦ $_name ◦ $_primary ◦ $_rowClass ◦ $_rowsetClass ◦ $_referenceMap ◦ $_dependentTables ◦ $_schema ◦ …

8

9

10  Egyéni lekérdezések, a sorokra vonatkozó műveletek adhatók meg  RowSetek esetén: current() metódus!  Overriding jelentősége  save() metódus (date_created, date_updated)  toArray() – a rekordból név/érték párok alapján asszociatív tömböt készít

11

12  A két művelet nagyrészt megegyezik kódszinten, ezért egyetlen action-ben szoktuk megírni a duplikációk elkerülése végett (view-ban is egyezik)

13  resources.db.adapter = "pdo_mysql" resources.db.params.host = "localhost" resources.db.params.username = "webuser" resources.db.params.password = "XXXXXXX" resources.db.params.dbname = "test" resources.db.isDefaultTableAdapter = true

14  $config = new Zend_Config_Ini( APPLICATION_PATH.'/configs/application.ini', APPLICATION_ENV );  $db = $config->resources->db; $db = Zend_Db::factory($db->adapter, $db->params->toArray());

15  Használható a Zend_Db ún. adapteres módban is  Ilyenkor nem írunk modellosztályokat  Nem átlátható, nagy redundancia, ráadásul az MVC is sérül

16

17  Zend_Db_Select  return: Provides a fluent interface SELECT name, salary FROM employee WHERE boss_ID = 12 AND salary<100000 ORDER BY name ASC; $select = $db->select() ->from(‘employee’, array(‘name’, ‘salary’)) ->where(‘boss_ID = ?’, 12) ->where(‘salary < ?’, 100000) ->order(‘name’); $resRowSet = $db->fetchAll($select);

18  Létezik az összes SQL kulcsszóra (joinok különböző fajtái, group, having, stb…) metódus  Előny: (szintaktikailag) adatbázisfüggetlen lekérdezés  Automata idézőjelezés (biztonsági szempont)  Persze nem kötelező élni a lehetőséggel, egyszerű query-ket is írhatunk  Dinamikusság, ellentétben a beírt SQL-lel szemben

19  MySQL nem kezel kapcsolatokat  A modell megírásával viszont képesek vagyunk rá  Kapcsolatok számossága  findDependentRowset()  findParentRowset()  findManyToManyRowset() $accountsTable = new Accounts(); $accountsRowset = $accountsTable->find(1234); $user1234 = $accountsRowset->current(); $bugsReportedByUser = $user1234->findDependentRowset('Bugs');

20  Pld.: Egy fórumtéma törlése esetén szeretnénk törölni az összes bejegyzést is az adott témában, de ezt nem akarjuk külön kiadni utasításba  Sajnos csak egy szinten implementált  A $_referenceMap tömb onDelete és onUpdate elemeiben jelennek meg

21  „Zend_Controller is the heart of Zend Framework's MVC system.”  Osztályok, melyek a vezérlést végzik  Kapcsolat az adatok, és azok megjelenítése közt  IndexController és ErrorController  URL-ek alapján dől el, melyik action fog futni http://azenoldalam.hu/controller/action/...  Ezek az ún. action controllerek, van sok egyéb is http://framework.zend.com/manual/en/zend.controller.html

22  Utility methods _forward() _redirect()  Action helperek  Action-ök: Pld.: ForumController, listtopicAction() http://azenoldalam.hu/forum/listtopic (view: views/scripts/forum/listtopic.phtml)

23  Paraméterek átadása GET-tel: http://azenoldalam.hu/forum/edittopic/topicid/6 /modifier/felhasznalo/mikor/ekkor  $this->getRequest();  $_POST és $_GET együtt  $request->getParam(’topicid’);  $request->getParam(’modifier’);  $request->getParam(’mikor’);

24  Tehát megírjuk a modellt, a controllerben elkérünk tőle egy adathalmazt, és azt feldolgozzuk  Az action-ben pedig továbbadjuk a már megfelelően átdolgozott adathalmazt egy változóként a megjelenítésnek. (A view a következő előadás anyaga)

25  Adatbázis, adatbázisterv és modellek létrehozása  Modellosztályok áttekintése  Zend_Db adapter módban való használata  Controllerekben való adatfeldolgozás


Letölteni ppt "4. előadás.  Általánosan a modellről  Table Data Gateway Pattern  A modellosztályok áttekintése  Zend_Db modellek nélkül  Controllerek ismét  Action-ök,"

Hasonló előadás


Google Hirdetések