Content extract
A PRADO keretrendszer alapjai Készítette: Kardos Gergely Tartalomjegyzék Tartalomjegyzék . 1 1. 2. 3. 4. 5. 6. Bevezet . 4 1.1 Célkit zés . 4 1.2 Miért pont a PRADO? [1] . 5 Komponensek[2] . 6 2.1 A komponensek tulajdonságai (Property) . 6 2.2 Komponensek altulajdonságai (Subproperty) . 7 2.3 Komponens eseményei (Events) . 8 2.4 Névterek (Namespaces) . 8 2.5 Komponensek telepítése. 9 2.51 Dinamikus komponenstelepítés . 9 2.52 Statikus komponenstelepítés . 10 Vezérl k (Controls)[2] . 11 3.1 Vezérlési fa (Control Tree) . 11 3.2 Vezérl k azonosítása (Control Identification). 11 3.3 Naming Containers . 12 3.4 ViewState és ControlState . 12 Lapok (Pages)[2] . 14 4.1 PostBack. 14 4.2 A lap életciklusa . 14 Modulok (Modules) [2] . 16 5.1 Request modul. 16 5.2 Response modul . 16 5.3 Session modul . 17 5.4 Error Handler Modul. 17 5.5 Custom Modul. 17 Szolgáltatások (Services)[2]. 17 6.1 Lap szolgáltatások (Page
services). 18 -1- A PRADO keretrendszer alapjai 7. 8. Alkalmazások (Applications)[2] . 19 7.1 Könyvtárszerkezet. 20 7.2 Az alkalmazás elhelyezés . 21 7.3 Az alkalmazás életciklusa . 21 Beállítások [2]. 23 8.1 Template beállítások . 23 8.11 8.111 9. Készítette: Kardos Gergely Komponens tag-ek. 23 Komponens ID-k. 25 8.12 Template vezérl tag-ek . 25 8.13 Megjegyzés tag-ek. 26 8.14 Dinamikus tartalom tag-ek . 26 8.141 Expression tag-ek. 26 8.142 Stalement tag-ek . 27 8.143 Databind tag-ek . 27 8.144 Paraméter tag-ek. 28 8.145 Asset tag-ek . 28 8.2 Alkalmazás beállítások. 28 8.3 Lap beállítások. 30 Elvárások a weblappal szemben. 32 9.1 Feladatspecifikáció. 32 9.2 Felhasználók [3 14-26 old] . 33 9.3 Felhasználói esetek részletezése . 34 9.31 Cikkek olvasása . 34 9.32 Cikkek beküldése. 34 9.33 Cikkek szerkesztése . 35 9.34 Cikkek törlése . 35 9.35 Hírek olvasása . 35 9.36 Hírek fölvitele . 35
9.37 Hírek szerkesztése . 35 9.38 Hírek törlése. 35 9.39 Linkek olvasása . 35 -2- A PRADO keretrendszer alapjai 10. Készítette: Kardos Gergely 9.310 Linkek fölvitele. 36 9.311 Linkek szerkesztése . 36 9.312 Linkek törlése . 36 9.313 Felhasználók és tagok kezelése. 36 Tervezés . 37 10.1 Adatbázis tervezés [4] . 37 10.2 Egyed – kapcsolat diagram . 37 10.3 Relációs adatbázis séma. 38 10.4 Az adatbázis tábláinak részletezése. 38 11. Kódolás [5][6][7] . 40 11.1 Fejleszt környezet. 40 11.2 Szabványok figyelembe vétele [9] . 41 11.3 A keretrendszer használata. 41 12. Felhasználói dokumentáció. 42 12.1 Az XAMPP telepítése . 42 12.2 A konfigurációs fájl beállítása . 44 13. Tesztelés[8] . 45 13.1 Üzembe helyezési teszt. 45 13.2 Funkcionalitási teszt . 45 14. Összegzés . 46 15. Irodalomjegyzék . 47 -3- A PRADO keretrendszer alapjai Készítette: Kardos Gergely 1. Bevezet 1.1 Célkit
zés A dolgozat célja egy, a Web-fejlesztésben jól alkalmazható keretrendszer bemutatása, ami segítségével gyorsan fejleszthetünk jól strukturált, biztonságos Webes alkalmazásokat. Az a tapasztalatom, hogy a mai világban a gyorsaság nagyon sokat számít, mert egy portál (dinamikus weblap) elkészítésének jogát az a cég fogja elnyerni, aki minél gyorsabban és olcsóbban tudja azt lefejleszteni. A legfontosabb cél még mindig a jó min ség kód készítése. Ezért például az a cég, ahol jelenleg is dolgozom, készített egy saját fejlesztés keretrendszert, amivel megkönnyítik és meggyorsítják a saját munkájukat, és sokkal strukturáltabb és jobb min ség kódot tudnak írni. A másik szempont az olcsó fejlesztés. Mivel a keretrendszer PHP 5-ben íródott, ez sem lehet akadály. A PHP-hez a fejleszt környezet, a webszerver, az adatbázisszerver is ingyenesen letölthet az internetr l, ráadásul platform-független, tehát nem szükséges
hozzá Windows-os szerver (PHP, MySQL, Appalche, Linux). Ezen el nyök ellenére hazánkban elterjedése lassú, ugyanis a fellelhet segédanyagok kivétel nélkül angol nyelven íródtak, amit a diákok nehézkesebben alkalmaznak, és így a keretrendszer bonyolult szövedékét sem látják át teljesen. Ez az anyag is ahhoz kíván segítséget nyújtani, hogy a PHP oktatásban résztvev diákok az órai ismereteket kiegészítve megkönnyítsék kés bbi munkájukat. -4- A PRADO keretrendszer alapjai Készítette: Kardos Gergely 1.2 Miért pont a PRADO? [1] Azért választottam a PRADO keretrendszert, mert a fent említett kritériumoknak tökéletesen megfelel, és nagyon ötletes elemekkel b vítik ki a PHP nyelvet. A PRADO is ingyenesen hozzáférhet az interneten. A PRADO ötletesen lemásolta a Microsoft® .NET, konkrétan az ASPNET osztálystruktúráját és m ködési filozófiáját. Mindezt PHP-ben programozták le A PHP nyelvet olyan logikai elemekkel b
vítették, mint pl. a névterek A PRADO felépítése A PRADO-t úgy programozták, hogy ne korlátozza be az abban programozókat. A keretrendszer a Web programozásra koncentrál, tudja, hogy a fejleszt kt l rengeteg id t elvesz a felhasználóval való kapcsolattartás, rlapok ellen rzése. Erre kínál hatékonyabb megoldást a PRADO. A következ osztályfa azokat a f bb osztályokat mutatja, amiket a PRADO nyújt. 1.1 ábra A PRADO keretredszer osztálystruktúrája 1 1 Forrás: http://www.pradosoftcom/demos/quickstart/?page=FundamentalsArchitecture -5- A PRADO keretrendszer alapjai Készítette: Kardos Gergely A következ statikus objektum diagram mutatja, hogy hogyan dolgoz fel a PRADO alkalmazás egy oldalkérést. 1.2 ábra Statikus objektum diagram 2 2. Komponensek 2] A komponensek a TComponent osztály leszármaztatott osztályai. A bázis osztály, a TComponent szolgáltatja a komponensek tulajdonságait és eseményeit. 2.1 A komponensek tulajdonságai
(Property) A komponens egy tulajdonsága public változóként látható és meghatároz egy, a komponensre jellemz tulajdonságot, pl.: a háttérszínt vagy a bet nagyságot. A tulajdonságoknak definiálva van egy beállító és egy értéket lekér (get/set) metódusa a komponens osztályban. Például a TControl osztályban definiálunk egy ID tulajdonságot a következ programrészlettel: class TControl extends TComponent { public function getID() { . } public function setID($value) { . } } 2 Forrás: http://www.pradosoftcom/demos/quickstart/?page=FundamentalsArchitecture -6- A PRADO keretrendszer alapjai Készítette: Kardos Gergely Hogy lekérjük és beállitsuk az ID tulajdonságot, kezelhetjük úgy is, mint egy egyszer változót: $id = $component->ID; $component->ID = $id; Ez ekvivalens a következ vel: $id = $component->getID(); $component->setID( $id ); Egy tulajdonság kizárólag olvasható lesz, ha nem íruk neki beállító metódust, csak
lekérdez t. A komponens osztály leszármaztatott osztályai öröklik az s osztály összes tulajdonságát és altulajdonságát egyaránt. 2.2 Komponensek altulajdonságai (Subproperty) Az altulajdonság egy olyan tulajdonság, aminek szintén vannak objektum típusú tulajdonságai. Mint például a TWebControl osztálynak van egy Font nev tuljdonsága, ami TFont típusú. A Font tulajdonságnak is vannak tulajdonságai, többek kötött a Name tulajdonság, ami altulajdonságként van azonosítva (a TWebControl osztályból nézve). Ahhoz, hogy lekérjük, vagy beállítsuk a Name altulajdonság adatait, a következ metódust használhatjuk: $name = $component->getSubProperty(Font.Name); $component->setSubProperty(Font.Name, $name); Ez ekvivalens a következ vel: $name = $component->getFont()->getName(); $component->getFont()->setName( $name ); -7- A PRADO keretrendszer alapjai Készítette: Kardos Gergely 2.3 Komponens eseményei (Events) A
komponensek eseményei speciális tulajdonságok. Ezek olyan beállító metódusok az eseményekhez, amik szintén egy másik metódust hívnak meg, ami az eseményt okozza. Az esemény neve megegyezik a metódus nevével. Nézzünk erre egy példát! A TButton Az el osztályból: class TButton extends TWebControl { public function onClick( $param ) { . } } z példa definiálta az eseményt OnClick névvel, ezt a következ képpen tudjuk elérni: $button->OnClick = $callback; $button->OnClick->add( $callback ); $button->OnClick[] = $callback; $button->attachEventHandler( OnClick , $callback ); Ahol $collback egy valós PHP callback. 2.4 Névterek (Namespaces) A névtér osztályok neveinek logikai csoportosítására szolgál. Ahhoz használjuk, hogy meg tudjuk különböztetni az azonos nev osztályokat. Eddig valójában a PHP nem támogatta a névtereket, ezért nem tudta megkülönböztetni a két ugyanolyan névvel ellátott osztályt, aminek más volt a
definíciója. A felhasználó által írt osztályok megkülönböztetéséhez a PRADO-ban az összes osztály elé egy ’T’ bet került (jelentése: Type /Típus/). Természetesen a felhasználók nem adhatják ugyanezeket az osztályneveket, de más prefixumokat alkalmazhatnak az osztálynevek el tt. A névtér a PRADO-ban olyan könyvtár vagy könyvtárak, amiben számos osztályt tartalmazó fájlt található. Minden névtér a PRADO-ban a következ formátumban írható le: ParthAlias.Dir1Dir2 -8- A PRADO keretrendszer alapjai Készítette: Kardos Gergely Ahol a PartAlias néhány könyvtár alias neve ( A PRADO-ban két alapból definált alias van a System és az Application), a Dir1, Dir2 pedig alkönyvtárak a f könyvtár alatt. Egy osztályt a Dir2 alkönyvtár alatt a következ képpen tudunk definiálni: ParthAlilas.Dir1Dir2 MyClass Ahhoz, hogy használni tudjuk a névtereket, a következ utasítás szükséges: Prado::using(PathAlias.Dir1Dir2); Az el z
utasítás tulajdonképpen a könnyvtárakban lév fájlokat incude-olja be, természetesen a névtér prefixum nélkül. Ez akkor el nyös, ha sok osztályt szeretnék egyszerre be incude-olni, mert egyetlen sorban le lehet írni. Természetesen lehet ség van egyetlen osztály includolására is a következ utasítással: Prado::using(PathAlias.Dir1Dir2MyClass); Ez includeolja a MyClass nev osztályt, ha addig még nem volt definiálva. 2.5 Komponensek telepítése A komponenstelepítés alatt azt értem, hogy létre kell hozni egy osztálypéldányt a komponens osztályból. Ezt megtehetjük statikusan és dinamikusan 2.51 Dinamikus komponenstelepítés A dinamikus telepítésnél dinamikusan hozzuk létre az osztálypéldányt PHP-ben. A komponenseket a következ két utasítással lehet dinamikusan telepíteni: $component = new ComponentClassName; $component = Prado::createComponent(ComponentType); -9- A PRADO keretrendszer alapjai Készítette: Kardos Gergely
Ahol a ComponentType az osztály nevét vagy típusnevét jelenti névtér formátumban (pl.: SystemWebUITControl) A második kifejezés a PHP-b l hiányzó névtér kezelést hivatott pótolni. 2.52 Statikus Statikus komponenstelepítés komponensinstallálással általában az alkalmazások konfigurálásánál találkozunk. Ez annyit jelent, hogy a munkát (osztálypéldány létrehozást) nem mi, hanem a PRADO keretrendszer végzi el. Például a fönnemlített alkalmazás konfigurálásánál, amikor egy modult konfigurálunk, és betöltjük, amikor az alkalmazást elindítjuk. A modul egy statikus komponens, amit a keretrendszer generál. A statikus komponenstelepítést egy másik fontos helyen is alkalmazzuk, mégpedig a template-eknél. Minden komponens tag (<com: />) a template-ben meghatároz egy komponenst, amit a keretrendszer automatikusan létrehoz, amikor a template betölt dik. Például a következ template tag egy TButton komponenst hoz létre a
lapon: <com:TButton Text="Register" /> - 10 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 3. Vezérl k (Controls)[2] A vezérl kifejezés a TControl osztályra vagy annak alosztályaira utal. A vezérl egy komponens, egy b vítmény felhasználói interfésszel. A bázisosztály a Tcontrol, ami meghatározza a szül -gyermek kapcsolatokat a vezérl k között, ami behatárolja a felhasználói interfészek közötti kapcsolatot is. 3.1 Vezérlési fa (Control Tree) A vezérl k között szül -gyermek kapcsolat van. Minden szül vezérl nek lehet egy vagy számos gyermek vezérl je. A szül vezérl szolgáltatja az alapelemeket a gyermekvezérl knek. Természetesen a gyermekvezérl k eredményeit a szül vezérl k elérik és felhasználják. Ez a szül -gyermek kapcsolat köti össze a vezérl ket egy vezérlési fává. A lap (page) a gyökere ennek a fának, ami az eredményeket szolgáltatja a végfelhasználónak (a keretrendszert
használó személynek). A szül -gyermek kapcsolat a keretrendszer által valósul meg, általában template-ek segítségével. A kódolás során gyermekvezérl ket hozhatunk létre a következ metódusokkal: $parent->Controls->add($child); $parent->Controls[]=$child; ahol a Controls tulajdonság a szül egy gyermek vezérl csoportja. 3.2 Vezérl k azonosítása (Control Identification) Minden vezérl nek van egy ID tulajdonsága, ami egyedi azonosító, és megkülönbözteti egymástól a vezérl ket. Ha nem lenne elég ez a tulajdonság, a keretrendszer biztosít még UniqueID és ClientID tulajdonságokat is, ami globálisan a vezérlési fában pontosan meghatározza a vezérl t. Az UniqueID és a ClientID nagyon egyszer felépítés . Ezeket a tulajdonságokat a keretrendszer bels motorja használja azért, hogy meghatározza, hogy a vezérlési fában hol helyezkedik el az adott vezérl . A UniqueID és a ClientID explicit alakjával sehol nem
találkozunk - 11 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 3.3 Naming Containers Minden vezérl nek van naming container-e, ami egy vezérl arra az esetre, ha ugyanolyan ID-val hoznánk létre két vezérl t. Ez a vezérl képez egy egyedi névteret, aminek a segítségével megkülönböztethet a két vezérl . Például a TRepeater vezérl nek két ugyanolyan ID-val rendelkez gyermek vezérl je van. Ahhoz, hogy ezeket a gyermek vezérl ket meg tudjuk különböztetni, mindkét vezérl nek adunk egy naming container ID-t is, ami a saját ID-jával már egyedi meghatározást tesz lehet vé . A vezérl , ami a naming containereket szolgáltatja a INamingContaier interfész. 3.4 ViewState és ControlState A HTTP olyan protokoll, ami nem támogatja a felhasználó és a szerver közötti interakció tárolását. A Web alkalmazások készítésénél viszont szükségünk van arra az információra, hogy a felhasználó mit tett az el z kérésnél. A
programozók a session segítségével tárolják az információkat. A PRADO a viewstate és controlstate koncepciót a Microsoft ASP.NET-b l vette kölcsön, amely egy nagyon impozáns programozói mechanizmus. A változók tárolása a viewstae-ben vagy a controltsate-ben azért el ny s, mert a kérés után, vagy a form elküldése után (ezt PostBack-nak nevezzük) meg tudjuk jeleníteni ugyanazt a lapot ugyanannak a felhasználónak, és természetesen az adatok is megmaradnak. Ennek f ként akkor vesszük hasznát, amikor a felhasználó hibásan tölti ki az rlapot, és mi visszaküldjük neki a saját megadott adataival, hogy javítsa ki a hibát. A különbség a viewstate és a controlstate között, hogy ha viewstate le van tiltva, a controlstate nem, illetve fordítva. - 12 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely A viewstate és controlstate a TControl osztályban van implementálva. Általában a különböz vezérl k gyakran váltakozó
tulajdonságainak definiálására használjuk. Ahhoz hogy elmentsünk, vagy kiolvassunk egy válozót a viewstate-b l vagy controlstae-b l, használjuk a következ metódusokat: $this->getViewState(Name,$defaultValue); $this->setViewState(Name,$value,$defaultValue); $this->getControlState(Name,$defaultValue); $this->setControlState(Name,$value,$defaultValue); ahol a $this egy példavezérl $DefaultValue , a Name egy kulcs, ami azonosítja az állandót, a pedig opcionális. Ha változókat olvasunk ki s viewstate-b l vagy controlstate-b l, és a keretrendszer nem találja a megadott kulcsot, akkor az alapértelmezett érték /$DefaultValue/ ép életbe. - 13 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 4. Lapok (Pages)[2] A lapok a legfontosabb svezérl k, ami azt jelenti, hogy nincs szül vezérl jük. A lap kimenete közvetlenül megjelenik a felhasználónak. A lapokat úgy lehet elérni, hogy küldünk egy kérést a szervernek. Minden
lapnak rendelkeznie kell egy template fájllal. A fájl nevének kiterjesztése .page A fájl neve a kiterjesztés nélkül lesz a lap neve A PRADO keretrendszer ott keresi a lap osztály fájlját, ahol a template fájl is található. A lap osztály fájlának neve meg kell hogy egyezzen a template fájl nevével (.php kiterjesztéssel). Ha a keretrendszer nem találja az osztályt tartalmazó fájlt, automatikusan a TPage osztályt veszi fegyelembe. 4.1 PostBack A PostBack azokat a kliens oldali eseményeket kezeli, amiket a felhasználó idézett el . A PRADO megpróbálja megtalálni, hogy melyik vezérl felel s a PostBack eseményért. Ha egy vezérl , például a TButton a keretrendszer a PostBack esemény küld jének hívja, ami lefordítja a PostBack eseményt szerver oldali eseményekre. (Ha például egy TButton vezérl vel indítok egy másik eseményt) 4.2 A lap életciklusa A lap életciklusának megértése dönt fontosságú ahhoz, hogy megértsük a PRADO
programozási techikáját. A lap életciklusa mutatja lap lényeges változásait, amikor a felhasználónak kiszolgálja a lapot. Ez a következ folyamatábrán figyelhet meg - 14 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 4.1 ábra A lap életciklusa 3 Forrás: www.pradosoftcom - 15 - 3 A PRADO keretrendszer alapjai Készítette: Kardos Gergely 5. Modulok (Modules) [2] A modul egy osztálypéldány, amit a TModule interfész hoz létre. A modult arra találták ki, hogy egy speciális funkciót lásson el, és ezt be lehessen illeszteni a PRADO alkalmazásba, és megosztani az összes komponenssel az alkalmazásban. A PRADO konfigurációt használ a modulok betöltésénél, azért, hogy milyen modult töltsön be, és hogy inicializálja a modulokat. A fejleszt k a modulok magját helyettesíthetik a saját alkalmazás konfigurációjukkal, vagy új modulokat is írhatnak, ha a beépített moduloknál több, vagy speciálisabb funkciókra van
szükségük. Például írhatunk egy modult a gyakorta alkalmazott adatbázis-funkciókra, ami az összes olyan helyre felhasználható lesz, ahol adatbázis-funkciókkal dolgozunk. Három magmodult tölt be a keretrendszer, amikor fut az alkalmazás. Ezek a request mudul, a response modul és az error handler module. A session modul csak addicionális, csak akkor tölt dik be, ha használja a PRADO alkalmazás. A PRADO szolgáltatja az alapvet kivitelezéseket ehhez a három modulhoz. A felhasználó örökítheti ezeknek a moduloknak a tulajdonságait, és megváltoztathatja azokat. 5.1 Request modul A Request modul tárolja és fér hozzá a felhasználó által küldött kérésekhez http-n keresztül. A felhasználó által küldött adatok számos forrásból jöhetnek, beleértve URL-t (GET adatok), a POST adatokat, a SESSON adatokat és a COOKIE adatokat. Mindezen adatok elérhet ek a Request modulon keresztül. Alapértelmezés szerint a PRADO-ban a THttpRequest a Request
modul. A Request modul az alkalmazások és a vezérl k Request tulajdonsága által érhet el. 5.2 Response modul A Response modul biztosítja a mechanizmust a kimeneti adatok küldéséhez a felhasználók felé. A Response modul vezérli, hogy az adatok fogadását a kliens oldalon. Ezt a modult használjuk még a cookie-k küldésére vissza a kliens oldal felé Alapértelmezés szerint a PRADO a THttpResponse használja Response modulként. A Response modul az alkalmazások és a vezérl k Request tulajdonsága által érhet el. - 16 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 5.3 Session modul A Session modul kezeli a felhasználói session-öket. A Session modul automatikusan betölt dik, amikor az alkalmazás session-t használ. Alapértelmezés szerint a PRADO a THttpSession használja Session modulként, ami tulajdonképpen összefogja a PHP session kezel függvényeit. A Session modul az alkalmazások és a vezérl k Session tulajdonsága által
érhet el. 5.4 Error Handler Modul Az Error Handler Modul-t arra használjuk, hogy feldolgozzuk az alkalmazás futása közben keletkezett összes hibát. A PRADO TErrorHandler használja error handler modulként. Ez megfogja az össes warningot, notice-t és kivételt, és kultúrált formában jeleníti meg ket a felhasználónak. A Error Handler Modul az alkalmazások és a vezérl k Error Handler tulajdonsága által érhet el. 5.5 Custom Modul A PRADO a magmodulokon kívül több más modult is tartalmaz. Ezek az include catching modulok (TSqliteCache és TMemCache), user management modul (TUserManager) authentication és authorization modul( TAuthManager) stb. Ha a TPageService szükségelteti, hogy betölt djenek a lapszolgáltatás specifikus modulok, akkor betöl dik az assat manager (TAssetManager), a template manager (TTemplateManager), theme/skin manager (TThemeManager). A Custom modulok és a magmodulok is szabadon konfigurálhatók. 6. Szolgáltatások (Services)[2] A
szolgáltatás egy osztálypéldány, amit az IServie interfész hoz létre. Az összes szolgáltatás egy speciális felhasználói kérelem. Például a szolgáltatások reagálnak a felhasználói kérésekre a PRADO keretrendszert használó alkalmazásokban. A szolgáltatás egyedileg meghatározott egy ID tulajdonsággal. Alapértelmezés szerint, amikor THttpRequest a request modul a GET változó határozza meg, hogy a felhasználó melyik szolgáltatást kérte. Ha a GET változó neve megegyezik egy másik szolgáltatás ID-vel, a kérés megpróbálja megtalálnia szolgáltatást és a GET válozó - 17 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely értéket szerviz paraméterként, adja át a szolgáltatásnak. A lapszolgáltatásokhoz a GET váltózónak page nev nek kell lennie. Például a következ URL a Fundamentals.Services lapot kéri http://hostname/index.php?page=FundamentalsServices Mi magunk is készíthetünk szolgáltatásokat a saját
alkalmazásunkhoz. Ehhez konfiguráljuk a szolgáltatást az alkalmazás konfigurációjában. 6.1 Lapszolgáltatások (Page services) A PRADO a TPageService-t implementálta, hogy feldolgozza a felhasználó lapkéréseit. A lapok egy könyvtár alatt helyezkednek el, amit a BaseParth tulajdonsággal tudunk megadni. Ez a tulajdonság egy pages könyvtár az alkalmazás báziskönyvtára alatt. Alapértelmezés szerint ebbe a mappába kerülnek az alkalmazás oldalai (template fájlok, osztály fájlok, konfigurációs fájlok). Ezt meglehet változtatni az alkalmazás konfigurációs fájljában. A lapokat alkönyvtárakba is tehetjük az alapértelmezett könyvtár alá. Minden könyvtárnak tartalmaznia kell egy lap konfigurációs fájlt config.xml a névvel, ami a könyvtárban lev adatoknak a konfigurálására szolgál. A szolgáltatás paraméter a page szolgáltatásnak azt jelenti, hogy az adott lapkérésre került. A paraméter, mint a Funamentals.Services, jelenti a
Services lapot a <BaseParth>/Fundamentals elérési úton. Hogyha valamelyik paraméter hiányzik a kérésb l, az alapértelmezett oldal (Home) jelenik meg. A következ URL-ek a Home, az About és a Register oldalakra irányuló kérések: http://hostname/index.php http://hostname/index.php?page=About http://hostname/index.php?page=UsersRegister ahol az els példa mutatja, hogy a page service az alapértelmezett szolgáltatás és a Home az alapértelmezett oldal. - 18 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 7. Alkalmazások (Applications)[2] Az alkalmazás egy osztálypéldány, vagy egy származtatott osztály a TApplication osztályból. Ez kezeli a modulokat, amik különböz funkcionalitásokat szolgáltatnak, és ehhez betöltik a szükséges adatokat. Ez az a központi hely, ahol a paramétereket tárolhatjuk az osztálypéldány alkalmazáshoz. az egyetlen A PRADO objektum, alkalmazásokban ami globálisan az application elérhet a
Prado::getApplication() függvényhívással. Az alkalmazások az alkalmazás konfigurációs fájljaiban konfigurálhatók. Ezek általában a következ kóddal kezd dnek: require once(/path/to/prado.php); $application = new TApplication; $application->run(); ahol a run() metódus indítja az alkalmazást, hogy az tudja fogadni a felhasználói kéréseket. - 19 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 7.1 Könyvtárszerkezet A legkisebb PRADO alkalmazás két fájlt tartalmaz: egy kezd fájlt és egy lap template fájlt. Ezeknek a következ könyvtárszerkezetben kell elhelyezkedniük 7.1 ábra Egy PRADO alkalmazás könyvtárstruktúrája wwwroot – a webes dokumentumok f -, vagy alkönyvtára. index.php – a PRADO alkalmazás kezd fájlja assets – a publikált private fájlok helye protected – az alkalmazás adatait és a private scripteket tartalmazó könyvtár. Ezt a könyvtárat úgy kell konfigurálni, hogy ne lehessen elérni a Webr
l, vagy wwwroot-on kívül kell tenni. runtime – az alkalmazás futása közben keletkezett adatok helye. Ilyen adatok például alkalmazás log fájlja, cache adatok stb. pages – a PRADO lapok tárolására szolgál Home.page – alapértelmezett oldal, ha a felhasználó nem ad meg paramétert a kérésben, ez a lap jelenik meg. Ez egy template fájl A fájlnév utótag nélkül adja a lap nevét. A lap osztálya a TPage Hozzá tartozik még egy osztályt tartalmazó fájl is, aminek Home.php a neve - 20 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 7.2 Az alkalmazás elhelyezés A PRADO alkalmazás elhelyezése a könyvtárak fölmásolását foglalja magában. Például egy kis PRADO alkalmazás áthelyezéséhez egy másik szerverre a következ lépéseket kell végrehajtani: 1. A tartalom bemásolása a wwwroot Webr l elérhet könyvtárba az új szerveren 2. Módosítani a kezd fájlt indexphp, ha nem jól tartalmazza pradophp elérési útvonalát 3.
Az összes tartalmat eltávolítani az assats és a runtime könyvtárból, és a könyvtárakat írhatóvá kell tenni a Web szerveren. 7.3 Az alkalmazás életciklusa Mint ahogyan a lapoknak, az alkalmazásoknak is van életciklusuk. Az alkalmazás moduljai életciklus eseményekre regisztrálódnak. Amikor az alkalmazás elér egy bizonyos életciklust, a regisztrált modulhoz a megfelel esemény automatikusan lefut. A modulok a PRADO-ban, mint például a TauthManager, ezt az utat alkalmazzák, hogy elérjék a céljukat. Az alkalmazások életciklusát a következ oldali ábra mutatja. - 21 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 7.2 ábra A PRADO alkalmazások életcikusa 4 Forrás: www.pradosoftcom - 22 - 4 A PRADO keretrendszer alapjai Készítette: Kardos Gergely 8. Beállítások [2] A komponenseket, a lapokat, és az alkalmazásokat is külön lehet konfigurálni a PRADO-ban. 8.1 Template beállítások A template-ket a vezérl k
alapvet kinézetének kialakítására használjuk. A templatek tartalmazhatnak, statikus szöveget, komponenst vagy vezérl t, ami a vele kapcsolatban lev vezérl alapvet beállításait tartalmazza. Alapértelmezésben a TTemplateControl vagy egy részosztályának osztálypéldánya tölt dik be, ami inicializálja a template form-ot, aminek a neve megegyezik a vezérl osztály nevével. A lap templatek .page kiterjesztés eknek kell, hogy legyenek, a többi, általános template-nek .tpl a kiterjesztése A template-k formátuma olyan, mint egy általános HTML oldal formátuma, csak ebben számos PRADO specifikus tag is megtalálható. Ilyenek például komponens tag-ek , template tag-ek, template vezérl tag-ek, dinamikus komponens tag-ek, és dinamikus tulajdonság tag-ek. 8.11 Komponens tag-ek A komponens tag-ek a komponenst a html lap törzsének részeként definiálják, mint a template vezérl tartalma. Ha a komponens egy vezérl , általában a template vezérl
gyermekévé vagy unokájává válhat. A komponens tag formátuma a következ : <com:ComponentType PropertyName="PropertyValue" . EventName="EventHandler" .> body content </com:ComponentType> A ComponentType vagy az osztály neve vagy a mutatott komponens (System.WebUITControl ) típusának neve Mind a PropertyName és az EventName is kis-nagy bet érzékeny. A PropetryName lehet egy tulajdonság, vagy egy - 23 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely altulajdonság neve (pl.: FiontName) A tartalom a komponensnyitó és záró tag-ek között kezelt. A komponens tag-eknek párban kell szerepelnie (egy nyitóhoz minden esetben tartozzon egy záró tag). A következ template-ben egy komponens tag található, aminek meghatároztuk a Text tulajdonságát és egy OnClick eseményt a button vezérl n. <com:TButton Text="Register" OnClick="registerUser" /> Az események neve mindig On-nal
kezd dik. Ha egy tulajdonsághoz sok inicializálandó adat tartozik, akkor a következ innicializáló tag-et is használhatjuk: <prop:PropertyName> PropertyValue </prop:PropertyName> Ez megegyezik a PropertyName="PropertyValue" megoldással minden tekintetben. A tulajdonság inicializáló tag-eket a komponens tag-ek közé kell elhelyezni. - 24 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 8.111 Komponens ID-k Amikor tulajdonságokat határozzuk meg a teplate-ben, az ID tulajdonság egy speciális szerepet kap, mégpedig ezzel a névvel lehet hivatkozni a komponensre. A komponenst el lehet érni a template vezérl b l az ID alapján. Például a f lapon egy komponens tag: <com:TTextBox ID="TextBox" Text="First Name" /> Ahhoz hogy elérjük a TextBox objektumot a következ ket kell tenni: $page->TextBox 8.12 Template vezérl tag-ek A template vezérl tag-eket arra használjuk, hogy kezd értékkel
lássuk el a vezérl k tulajdonságait. A következ formátumban tehetjük ezt meg: <%@ PropertyName="PropertyValue" . %> Mint a komponens tag-ek, a tulajdonság és altulajdonság tag-ek is megkülönböztetik a kis és nagy bet ket. Az értékeket a template vezérl inicializálja, akkor, amikor a template vezérl konstruktora lefut. Ezeket az alapértékeket a program futása során bármikor meg lehet változtatni. A template vezérl tag-et nem kötelez használni a template-ben. Minden templateben szerepelhet egynél több template vezérl tag. A template vezérl tag-et a template bármely pontjára el lehet helyezni, de az áttekinthet ség kedvéért ajánlott az elejére helyezni ket. - 25 - A PRADO keretrendszer alapjai 8.13 Készítette: Kardos Gergely Megjegyzés tag-ek A template-ben megjegyzéseket a megjegyzés tag-ekkel tudunk tenni. A megjegyzés tag-eknek két fajtája van. Az egyik olyan, mint a HTML-ben Ennél, ha megnézzük a lap
forrását, láthatjuk a megjegyzést. A másik csak a template-ben jelenik meg. Amikor a template megjelenik a felhasználónak, ezeket már kitisztította a forrásból a keretrendszer. Tehát ha megnézzük a lap forrását, nem látjuk ezeket. A két megjegyzés tag fromátumát a következ kben láthatjuk: <!-A felhasználó által látható megjegyzés --> <! A felhasználó által nem látható megjegyzés !> 8.14 Dinamikus tartalom tag-ek A dinamikus tartalom tag-eket úgy tudnám egyszer en bemutatni, mint egy parancsikont, ami a gyakran használt komponens tagokra mutat. Ezeket a tag-eket általában a PHP-b l érkez dinamikus tartalom megjelenítésére használjuk. Ide tartozik az expression tag, az statement tag, a databind tag, az asset tag és a localizatiion tag. 8.141 Expression tag-ek Az expression tag egy PHP kifejezést hoz létre, ami a template vezérl PreRender állomásán jön létre. A template vezérl a kifejezésnek megfelel értéket
behelyettesíti a template-be. Tehát csak függvényhívásokat lehet alkalmazni, és ennek a visszatérési értékét helyettesíti be a template vezérl . - 26 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely Az expression tag formátuma a következ : <%= PhpExpression %> A következ példa a lap címét helyezi el a template-ben: <%= $this->Title %> 8.142 Stalement tag-ek A statement tag-ek nagyon hasonlóak az expression tag-ekhez. A különbség az, hogy ezeknél nem a függvény visszatérési értékét helyettesíti be a template vezérl , hanem a beírt php skript kimenetét, amit többek között echo vagy print paranccsal érhetünk el. A formátum a következ : <%% PHP Statements %> A következ példa az aktuális id t mutatja Hollandiában: <%% setlocale(LC ALL, nl NL); echo strftime("%A %e %B %Y",time()); %> 8.143 Databind tag-ek A Databind tag is nagyon hasonlít az expression tag-hez, azzal a
különbséggel, hogy a databind tag-ek csak dataBind() függvényhíváskor értékel dnek ki. A formátum a következ : <%# PhpExpression %> - 27 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 8.144 Paraméter tag-ek A paraméter tag-eket arra használjuk, hogy az alkalmazásnak ott adjunk paramétert, ahol ez megjelenik. A paraméter tag formátuma: <%$ ParameterName %> Megjegyzés: Paramétereket általában az alkalmazás konfigurációs fájlban vagy a könyvtár konfigurációs fájlokban szoktunk adni. Ezek a paraméterek a template betölt désekor értékel dnek ki. 8.145 Asset tag-ek Az asset tag-eket a privát fájlok publikálására használjuk. Például, ha van egy képünk, ami nem elérhet a Web-r l, és azt akarjuk, hogy látható legyen a felhasználók számára, az asset tag-et használjuk a kép publikálására. Az asset tag formátuma a következ : <%~ LocalFileName %> ahol a LocalFileName azt az aktuális
template fájltól való relatív útvonalat jelenti, ahol a publikálandó fájl található. Ez lehet egyetlen fájl vagy könyvtár is Ebben az esetben az egész könyvtár elérhet vé válik. 8.2 Alkalmazás beállítások Az alkalmazás beállításánál az alkalmazás f bb viselkedési módját, állandóit állítjuk be. Ez magában foglalja az elérési út alias-okat, a használt névtereket, a modul- és szervizbeállításokat és a paramétereket. - 28 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely Az alkalmazás beállítások egy XML fájlban vannak tárolva, aminek az application.xml a neve, ami az alkalmazás f könyvtárában található meg. A formátumát a következ kben láthatjuk: <application PropertyName="PropertyValue" .> <paths> <alias id="AliasID" path="AliasPath" /> <using namespace="Namespace" /> </paths> <modules> <module id="ModuleID"
class="ModuleClass" PropertyName="PropertyValue"/>. </modules> <services> <service id="ServiceID"class="ServiceClass"propertyName="PropertyValue"/> </services> <parameters> <parameter id="ParameterID" class="ParameterClass" PropertyName="PropertyValue" /> </parameters> </application> A legküls elem az <application> a TApplication osztály osztálypéldányát reprezentálja. A PropertyName=”PropertyValue” párokkal tudunk inicializáló változókat adni a TApplication osztálynak. A <paths> elem tartalmazza az útvonal alias beállításokat és a PHP include fájlok elérési úvonalát. Minden alias egy <alias> elem állít be Az elérési út lehet relatív vagy abszolút. A <using> elem speciális elérési utat definiál (ez a PRADO szerinti névtér). Ezt hozzáadja a kertrendszer az include-ok közé, amikor elindul
az alkalmazás. A PRADO két alap alias-t definiál a System-et Application-t. Az els a PRADO keretrendszer root könyvtárát jelenti, az utóbbi pedig azt a könyvtárt, ahol az alkalmazás belállítási fájl található. A <modules> elem a modulokhoz tartozó beállításokat tartalmazza. Minden modul egy <modules> elemmel van meghatározva. Minden modult egyedileg meghatározza annak ID tulajdonsága PropertyName="PropertyValue" párok kezd és az osztály típusa. A értéket adnak a modulban szerepl tulajdonságoknak. A <services> elem nagyban hasonlít a <modules> elemre. Ez az alkalamzás szolgáltatásait definiálja. - 29 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely A <parameters> elem definiálja az alkalmazásszint paramétereket. Ezek az egész alkalmazásból bárhonnan elérhet k. Definiálhatunk komponens típusú paramétereket, mint a moduloknál, vagy string típusú paramétereket a
következ formátummal: <parameter id="ParameterID" value="ParameterValue" /> Alapértelmezés szerint explicit konfigurálás nélkül a PRADO alkalmazás indulásakor számos magmodul betölt dik. Mint például a THttpRequest, THttpResponse stb Az alapvet szolgáltatások, mint a TPageService is elindulnak. Az alkalmazás konfigurációs fájlok specifikációja a DTD és XSD fájlokban található. 8.3 Lap beállítások A lap a TPageService-t használja, hogy felülbírálja, vagy éppen elfogadja az alkalmazás beállításokat. Minden olyan könyvtárban kell lennie egy lapbeállító fájlnak, ahol lapok találhatók. Ez a file XML formátumban van tárolva, a neve config.xml Ha egy felhasználó kérés érkezik a <BaseParth>/dir1/dir2 könyvtárban található lapra, a TPageService megpróbálja megtalálni és betöltei a config.xml fájlt A keresési sorrend ebben az esetben a következ : <BaseParth> majd, <BasePath>/dir1 és
végül <BasePath>/dir1/dir2. Minden egyes helyen betölti a configxml fájlt, így a végs konfiguráció az összes fájl beállításaiból fog állni. - 30 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely A lap beállító fájl formátuma a következ : <configuration> <paths> <alias id="AliasID" path="AliasPath" /> <using namespace="Namespace" /> </paths> <modules> <module id="ModuleID" class="ModuleClass" PropertyName="PropertyValue"/> </modules> <authorization> <allow pages="PageID1,PageID2" users="User1,User2" roles="Role1,Role2" verb="get" /> <deny pages="PageID1,PageID2" users="User1,User2" roles="Role1,Role2" verb="post" /> </authorization> <pages PropertyName="PropertyValue" .> <page id="PageID"
PropertyName="PropertyValue" . /> </pages> <parameters> <parameter id="ParameterID" class="ParameterClass" PropertyName="PropertyValue" . /> </parameters> </configuration> A <parths>, a <modules> és a <parameters> elemek teljesen hasonlóak az alkalmazás beállítás fájlhoz. Az <authorization> elem meghatározza a könyvtárban és az alkönyvtárakban lév lapok elérési szabályait. A <pages> elem segítségével a lapok tulajdonságainak tudunk kezd értéket adni. Ezek a tulajdonságok láthatók lesznek az adott könyvtárból és alkönyvtáraiból. A lap konfigurációs fájlok specifikációja a DTD és XSD fájlokban található. - 31 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 9. Elvárások a weblappal szemben 9.1 Feladatspecifikáció A honlap célja a közösségépítés, valamint hogy teret adjon az egyéni gondolatok és problémák
kinyilvánításának. Ez egy személyes jelleg honlap, ahol lehet ség nyílik hírek, érdekes cikkek megosztására. Kés bbi tervekben szerepel egy fórum létrehozása. ADMIN lehet ségei: Cikkek olvasása, beküldése, szerkesztése, törlése Hírek olvasása, fölvitele, szerkesztése, törlése Linkek olvasása, fölvitele, szerkesztése, törlése Tagok és felhasználók kezelése TAGOK lehet ségei: Cikkek olvasása, beküldése, szerkesztése Hírek olvasása, fölvitele, szerkesztése Linkek olvasása FELHASZNÁLÓ lehet ségei: Cikkek olvasása, beküldése Hírek olvasása Linkek olvasása VENDÉG lehet ségei: Cikkek olvasása Hírek olvasása Linkek olvasása - 32 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 9.2 Felhasználók [3 14-26 old] 9.1 ábra Felhasználói esetdiagram - 33 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 9.3 Felhasználói esetek részletezése A weblapon háromféle jogosultság van. Az ADMIN, a
TAG, a FELHASZNÁLÓ és a VENDÉG. Az ADMIN-nak mindenre van jogosultsága Az els ADMIN felhasználót kézzel kell fölvenni, majd ez a felhasználó vehet föl újabb ADMIN-oknak felhasználókat és tagokat. Egy felhasználót taggá csak az admin min síthet. Ezzel szeretnénk azt elérni, hogy csak megfelel színvonalú cikkek kerüljenek föl a honlapra. Természeten az adminok minden beküldött cikket cenzúrázhatnak, vagy törölhetnek. 9.31 Cikkek olvasása A cikkek bevezet szövegei, címei és beküldési dátumai a f oldalon jelennek meg. Ha kíváncsiak vagyunk a teljes cikkre, akkor rá kell kattintanunk a >>> linkre a cikk után. Ezzel láthatóvá válik a teljes cikk Ha vissza szeretnénk térni a f oldalra, akkor kattintsunk a <<Vissza linkre a cikk végén. 9.32 Cikkek beküldése Cikkeket a Blog menüpontban küldhetünk be. Ez a lap csak admin, tag és felhasználó jogosultsággal érhet el. Itt három mez t kell kitöltenünk: a cikk
címe, a bevezet szöveg és a cikk tartalma. A beküldött szövegek egy TinyMCE5 nev javascript alapú html szerkeszt felülettel formázhatók meg. 9.2 ábra A TinyMCE felülete 5 Forrás: http://tinymce.moxiecodecom - 34 - A PRADO keretrendszer alapjai 9.33 Készítette: Kardos Gergely Cikkek szerkesztése A cikkek szerkesztése csak adminisztrátori és tagi jogosultággal lehetséges. Minden cikk alatt, ha adminisztrátorként vagy tagként vagyunk bejelentkezve, megjelenik két link: a módosítás és törlés illetve tagok esetében egy link: a módosítás. A módosítás linkkel tudjuk szerkeszteni a cikket. Egy tag csak a saját maga által beküldött cikkeken módosíthat. 9.34 Cikkek törlése A cikkek törlésére az adminisztrátoroknak van lehet ségük. A törlést a cikkek végén lev törlés linkre kattintva tehetjük meg. A cikkek törlése során a cikk státuszát állítjuk át töröltre így az visszaállítható. 9.35 Hírek olvasása A
legfrissebb híreket a baloldalon elhelyezked hírblokkban olvashatjuk. Ha a többi hírre is kíváncsiak vagyunk, akkor kattintsunk a cikkek végén található linkre. 9.36 Hírek fölvitele Híreket csak az adminisztrátorok és a tagok vihetnek föl. 9.37 Hírek szerkesztése A híreket csak az adminisztrátorok és a tagok szerkeszthetik. Ezt a hírek végén lév linkkel tehetik meg. 9.38 Hírek törlése A híreket szintén csak az adminisztrátorok törölhetik. A hírek törlése során a hír státuszát állítjuk át töröltre, így egy törölt hír bármikor visszaállítható. 9.39 Linkek olvasása A linkeket legegyszer bben a f oldal jobb oldalán lev linkek blokkban olvashatunk, ha több linket akarunk olvasni, azt megtehetjük a Linkek menüpont alatt. - 35 - A PRADO keretrendszer alapjai 9.310 Készítette: Kardos Gergely Linkek fölvitele Linkeket az adminisztrátorok vihetnek föl. A linkeket az adminisztrációs felületr l vihetünk föl,
ami a Beállítások menüpont alatt érhet el. 9.311 Linkek szerkesztése Linkeket az adminisztrátorok szerkeszthetnek. Ezt a linkek végén található linkkel tehetjük meg. 9.312 Linkek törlése Linkeket az adminisztrátorok törölhetnek. Ezt a linkek végén található linkkel tehetjük meg. A linkek törlése során csak a link státuszát állítjuk át így az visszaállítható 9.313 Felhasználók és tagok kezelése Azt az adminisztrációs felületr l tehetjük meg, ami a Beállítások menüpont alatt érhet el. Itt lehet törölni és módosítania felhasználókat és a tagokat Itt teheti meg az adminisztrátor, hogy egy felhasználót taggá nevez ki. - 36 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 10. Tervezés 10.1 Adatbázis tervezés [4] Az adatbázis tervezése során el ször az egyed – kapcsolat diagramot készítem el, majd a relációs adatbázis sémát, és végül a táblák részletezése következik 10.2 Egyed –
kapcsolat diagram 10.1 ábra E-K diagram - 37 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 10.3 Relációs adatbázis séma USERS (us id, us fullnev, us nev, us pass, us role, us email, us status); ROLE (rl id, rl nev); BLOG (bl id, bl date, bl cim, bl bevez, bl cikk, bl status, bl usid); NEWS (hir id, hir date, hir szoveg, hir status, hir usid); LINKEK (li id, li szoveg, li status, li usid); LOG (log id, log usid, log usnev, log event, log data); 10.4 Az adatbázis tábláinak részletezése USERS Sorszám Mez Típus Hossz Leírás 1 us id int 11 felhasználó azonosító 2 us fullnev varchar 255 felhasználó eredeti neve 3 us nev varchar 255 felhasználói név 4 us pass varchar 32 felhasználó jelszava 5 us role Int 11 csoportazonosító 6 us email varchar 255 email cím 7 us status int 1 felhasználó státusza Ez a felhasználói adatokat tartalmazó tábla ROLE Sorszám Mez Típus Hossz Leírás 1 rl id
int 11 Csoportazonosító 2 rl nev varchar 255 Csoport neve A felhasználói csoportokat tároló tábla - 38 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely BLOG Sorszám Mez Típus Hossz Leírás 1 bl id int 11 cikkazonosító 2 bl date timestamp 3 bl cim varchar 4 bl bevez text a cikk bevezet je 5 bl cikk text a cikk tartalma 6 bl status int 1 a cikk státusza 7 bl usid int 11 felhasználó azonosító cikk dátuma 255 a cikk címe A cikkek adatait tartalmazó tábla NEWS Sorszám Mez Típus Hossz Leírás 1 hir id int 11 hít azonosító 2 hir date datestamp 3 hir szoveg varchar 255 a hír szövege 4 hir status int 1 a hír státusza 5 hir usid int 11 felhasználói azonosító a hír dátuma A hírek adatait tartalmazó tábla LINKEK Sorszám Mez Típus Hossz Leírás 1 li id int 11 link azonosító 2 li szoveg varchar 255 link tartalma 3 li status int 1 lint státusza
4 li usid int 11 felhasználói azonosító A linkek adatait tartalmazó tábla - 39 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely LOG Sorszám Mez Típus Hossz Leírás 1 log id datestamp 2 log usid int 11 felhasználói azonosító 3 log usnev varchar 255 felhasználói név 4 log event varchar 255 log esemény 5 log data varchar 255 log adatok log azonosító A log adatokat tároló tábla, azért, hogy nyomon tudjuk követni a felhasználókat 11. Kódolás [5][6][7] 11.1 Fejleszt környezet Fejleszt környezetként az UltraEdit32 nev használtam, aminek demo verziója PHP és text editor programot ingyenesen letölthet a http://www.ultraeditcom/indexphp?name=Downloads webhelyr l A PHP futatásához szükségem volt webszerverre, adatbázis-szerverre, és PHP-re. Erre a kozkedvelt XAMPP 2.1 programcsomagot használtam Ebben a csomagban a következ szolgáltatások kaptak helyet: Apache, MySQL, PHP & PEAR, Perl,
ProFTPD, phpMyAdmin, OpenSSL, GD, Freetype2, libjpeg, libpng, gdbm, zlib, expat, Sablotron, libxml, Ming, Webalizer, pdf class, ncurses, mod perl, FreeTDS, gettext, mcrypt, mhash, eAccelerator, SQLite and IMAP C-Client. Ez a népszer programcsomag ingyenesen letölthet a következ webhelyr l: http://www.apachefriendsorg/en/xampp-windowshtml#641 A programcsomag nagy el nye, hogy ingyenes, minden platformra letölthet , és kompakt, vagyis mindent tartalmaz, amire egy programozónak általában szüksége van, nem kell a b vítmények egyenkénti telepítésével foglalkozni. - 40 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 11.2 Szabványok figyelembe vétele [9] A kódolás során ügyeltem a szabványosságra, ezért a honlapom designjának alapját egy ingyenesen letölthet template szolgáltatja, ami valid XHTML és CSS. Ez a következ helyr l tölthet le: http://andreasviklund.com/templates 11.3 A keretrendszer használata A kódolás során, ha
lehetett, a keretrendszer által támogatott megoldásokat használtam. Egy helyen (a belépéskor) b vítenem kellett a keretrendszert, mert nem volt jól megoldva az adatbázisból érkez felhasználók kezelése. A felhasználói hibák elkerülése érdekében minden beviteli mez ellen rzésre került a keretrendszer nyújtotta ellen rz metódusokkal, ami nagyban megkönnyítette a munkámat. A keretrendszer kezeli a felhasználók belépését, kilépését, a felhasználói csoportokat és a lapelérési szabályokat is, és még számos egyéb funkcióval könnyítette meg a munkámat. Ezekr l a dolgozat els felében olvashattunk Itt újra felhívnám a figyelmet a TinyMCE nev javacript alapú HTML szerkeszt re, amivel nagyon ízléses cikkeket lehet készíteni egyszer en. Úgy lehet dolgozni, mintha az MSWord-ben dolgoznánk, és a program legenerálja az annak megfelel HTML kódot, amit elmentünkk az adatbázisba, és kés bb ezt olvassuk vissza. Így nem kell tudni
HTML-ben programozni, ha egy ízléses cikket/anyagot szeretnénk fölvinni. - 41 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 12. Felhasználói dokumentáció 12.1 Az XAMPP telepítése Az oldal elérhet a http://kardos.victorinethu:88/ címen, de ha mégis lokális gépen szeretnénk telepíteni, akkor ez a fejezet nyújt majd segítséget a telepítésben. 12.1 ábra A telepítés indítása után a 12.1 ábrán látható kép fogad bennünket, ahol kiválaszthatjuk a telepítés nyelvét. Célszer en ezt állítsuk Magyarra 12.2 ábra Ha már kiválasztottuk a nyelvet, a 12.2 ábrán látható üdvözl kattintsuk a „Tovább>” gombra. - 42 - képerny t látjuk. Itt A PRADO keretrendszer alapjai Készítette: Kardos Gergely 12.3 ábra A következ lépés a telepítési hely kiválasztása, ez a 12.3 ábrán látható A tallózás segítségével tudjuk meghatározni a célmappa helyét. Ha kiválasztottuk a helyet, kattintsunk a
„Telepítés” gombra. 12.4 ábra A 12.4 ábrán a program tényleges telepítése folyik Itt a telepít a célmappába másolja a fájlokat és beállítja a szükséges beállításokat. - 43 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 12.5 ábra A 12.5 ábrán látható lépésben fejez dik be a telepítés, ehhez nyomjunk a „Befejezés” gombra. 12.6 ábra A 12.6 ábrán látható képerny n az a kérdés hangzik el, hogy szeretnénk-e, hogy a telepít telepítse az Appache, MySQL vagy Filezilla FTP szolgáltatást. Itt nyomjunk az „Igen” gombra. 12.2 A konfigurációs fájl beállítása Az application.xml fájlban a következ ket kell beállítani: <parameter <parameter <parameter <parameter id="host"localhost" /> id="database" value="prado" /> id="username" value="root" /> id="password" value="" /> - 44 - A host neve Az adatbázis neve A
felhasználói név az adatbázishoz Jelszó az adatbázishoz A PRADO keretrendszer alapjai Készítette: Kardos Gergely 13. Tesztelés[8] A programfejlesztés során a tesztelés egy igen fontos fázis. Itt derül ki, hogy a programban milyen hibák maradtak benne, amiket természetesen ki kell javítani. 13.1 Üzembe helyezési teszt Els lépésben a helyi szerverre való telepítést próbáltam ki. Ez hiba nélkül m ködött, semmiféle beállítást nem igényelt. Az adatbázis feltöltése és a konfigurációs XML fájl beállítása után az oldal megfelel en m ködött. A második lépés az él (internetes) szerveren való beüzemelés. Ez már nagyobb gondot jelentett, mivel a keretrendszer PHP 5-öt igényel és ez a verzió még nem tartozik az ismert és közkedvelt programnyelvek közé, ezért csak nagyon kevés szolgáltató használja. Ingyenes szolgáltatók közül nem is találtam egyet sem Szerencsére a cég, ahol dolgozom (Victorinet INTERNET Kft.)
megengedte, hogy a cég szerverére föltöltsem a weblapot, így ki tudtam próbálni, hogy m ködik-e helyesen. Kisebb beállítások után sikerült m ködésre bírni a weblapot Itt hívnám föl a PRADO-t használók figyelmét egy problémára, amit tapasztaltam. Az FTP-re való feltöltés során a fájlok nagy kezd bet i néhány helyen átíródtak kicsivé, és ez fatális hibát okozott, de ha visszaírtam nagy kezd bet re, akkor a m ködés helyreállt. 13.2 Funkcionalitási teszt A tesztelés e fázisában az összes funkciót végigpróbáltam, ami a feladatspecifikációban le volt írva, és nem tapasztaltam nagyobb hibákat. A tesztelésnél fontosnak tartottam hogy a funkciók ne csak egyetlen böngész ben m ködjenek helyesen, hanem lehet leg az összes böngész ben. Ezért az oldalt teszteltem a következ böngész kben: Mozilla Firefox Internet Explorer Opera Az els kett böngész ben a weblap tökéletesen m ködött, az utóbbi egyes verzióiban a
javascript nem jelent meg, de ett l még használható volt az oldal. - 45 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 14. Összegzés A dolgozat célja a PRADO keretrendszer bemutatása volt. Szerettem volna egy összefoglalást, bevezetést tartani a keretrendszer el nyeib l, amit az oktatásban is föl lehet használni. A keretrendszer rengeteg programozást megkönnyít függvényt tartalmaz, és nagyon struktúrált az osztályszerkezete. De ez az el ny hátránnyá válik, ha nincs egy jó, érthet dokumentáció. Ezt az rt szerettem volna betölteni a szakdolgozattal. Ugyan az angol dokumentáció elég jó, de vannak benne homályos részek, és jobban megérti a diák, ha az anyanyelvén van megmagyarázva a téma. A szakdolgozat készítése alatt elsajátítottam és a gyakorlatban alkalmaztam a PRADO keretrendszer. Ez a keretrendszer már a 30 verzió 1 évvel ezel tt a 20 verzió keltette föl az érdekl désemet, azóta a teljes keretrendszert az
alapjaitól fogva átírták, így nekem is át kellett térnem a 3.0 verzióra A dolgozatkészítés elején még csak egy béta verzió volt letölthet , ami még hiányosságokkal küszködött. Azóta kijött a végleges változat, így áttértem arra. A keretrendszer rugalmasságát bizonyítja, hogy a teljesen átstrukturált végleges verzióra való áttérés nem jelentett nagy akadályt. Csupán néhány dolgot kellett megváltoztatnom a konfigurációs XML fájlban. A keretrendszer használatakor nagyon ügyelnünk kell a karakterkódolásra, ugyanis a template fájlok UTF-8 kódolásúak, az osztályt tartalmazó PHP fájlok pedig ASCII kódolásúak. Ezt szigorúan be kell tartani, ellenkez esetben fatális hiba következik be. Ebb l adódik, hogy az adatbázisban az adatok is UTF-8 kódolással kerülnek, ami azért jó, mert ez egy nemzetközi kódolás, és minden országban helyesen fog megjelenni a weblapunk. Mindent összevetve a PRADO jól használható, hatékony
keretrendszer, ami a modern programozási standardoknak megfelel. Mindenkinek ajánlani tudom - 46 - A PRADO keretrendszer alapjai Készítette: Kardos Gergely 15. Irodalomjegyzék [1] A régi PRADO hivatalos honlapja http://www.xisccom/ [2] A megújult PRADO tutorial oldala http://www.pradosoftcom/demos/quickstart/ [3] Mazik István UML alapú rendszermodellezés BME méréstechnikai és Információs Rendszerek tanszék, 2004 ([14-26 old) (http://www.infmitbmehu/~varro/uml/slides/umlppt) [4] BME méréstechnikai és Információs Rendszerek tanszék, 2004 (http://www.infmitbmehu/~varro/uml/slides/umlppt) [5] Peter Moulding PHP haladóknak Fekete Könyv Perfact-Pro Kft, Budapest, 2002 [6] Julie C. Meloni A PHP a MySQL és az Appache használata Panem Könyvkiadó, Budapest, 2004 [7] George Reese, Randy Jay Íarger, Tim, King A MySQL kezelése és használata Kossuth Kiadó, 2003 [8] Dr. Balla Katalin Szoftver min ség és menedzsment: 15. Tesztelési technikák
http://www.iitbmehu/~balla/SzMM15-teszteles1ppt [9] Sikos László Stíluslapok a weben CSS kézikönyv BBS-INFO Kiadó, 2005 - 47 -