2024. május 6., hétfő

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

Zend Framework - 1. rész

  • (f)
  • (p)
Írta: |

Ismerkedés a Zend Frameworkkel

[ ÚJ TESZT ]

Bevezető

Ezen cikksorozatnak a célja az, hogy bevezetést nyújtson az egyik legelterjedtebb PHP-s keretrendszer használatába, lehetőségeibe. Feltételezem, hogy az olvasó közepes szinten ismeri a PHP-t, valamint tisztában van az objektumorientált programozási szemlélettel. A Zend Framework osztályai viszonylag gyengén csatoltak, így lehetőség van az egyes osztályok, csomagok elkülönült használatára. Éppen ezért könnyen bővíthető és az egyes feladatokat rengeteg módon megoldhatjuk. Nem célom, hogy teljes mértékben bemutassam a rendszer lehetőségeit - egyes részeit még én sem használtam - pusztán azt szeretném elérni, hogy a PHP-t kevésbé szeretők, valamint a teljesen funkcionális programozók felületesen megismerjék és rájöjjenek, hogy ezen a nyelven is lehet robusztus, jól strukturált, hatékony alkalmazást írni.

Telepítés

A munkához szükséges környezet kialakítása nagyban függ az operációs rendszertől, ezért pár szóban leírnám az általam használtat és a többivel nem foglalkoznék, ugyanis erről külön cikket lehetne írni.

Ubuntu 9.04 operációs rendszert használok, az apache2, php5, valamint a php5-cli csomagokra lesz szükségünk. Telepítést követően a rewrite, valamint a userdir modult engedélyeztem, valamint létrehoztam a home könyvtáramban egy public_html nevű könyvtárat. Siker esetén a http://localhost/~protezis/ címen egy üres könyvtárlista fogad.

Töltsük le a Zend Framework teljes verzióját a http://framework.zend.com/download/latest címről, és csomagoljuk ki. Én a ~/lib/ könyvtárba tettem mindezt. Vegyük fel a /home/protezis/lib/ZendFramework-1.8.4/library útvonalat a php.ini include_path változójába. Hozzunk létre a home könyvtárunkban egy bin alkönyvtárat, és hozzunk létre benne egy szimbolikus linket zf néven a letöltött csomagban található bin/zf.sh fájlra. Siker esetén a terminálba beírt zf parancs hatására egy súgót kapunk a lehetőségeinkről. (Elképzelhető, hogy újra be kell jelentkeznünk.)

Adjuk ki a zf create project test parancsot a ~/public_html/ könyvtárban. Ezzel a test alkönyvtáron belül legeneráltunk egy alap projektet. Amennyiben az általam leírt környezetet használjuk, nyissuk meg a test/public/.htaccess állományt, és a RewriteEngine On sor alá írjuk be az alábbit: RewriteBase /~/protezis/test. A http://localhost/~protezis/test/public címre egy "Welcome to the Zend Framework" feliratú oldalnak kell bejönnie.

Projekt áttekintése

A test könyvtárban az alábbiakat látjuk:
- application
- library
- public
- tests

application

Itt találjuk, illetve itt hozzuk majd létre a projektfüggő, nem publikus állományokat. A configs könyvtárban a konfigurációs állomány(oka)t találjuk. Többféle formátum közül választhatunk, fontos megjegyeznünk viszont azt, hogy a define konstansok csak az ini formátum esetén értékelődnek ki, mivel ezt a PHP-be beépített parse_ini_file függvény biztosítja számunkra. A maradék három könyvtár az MVC mintának megfelelően választja szét az alkalmazásunk egyes rétegeit. A Bootstrap.php állomány a futásidő elején, az egyes beállítások inicializálásánál játszik kulcsfontosságú szerepet. A public/index.php fájlban láthatjuk, hogy a konstansok és az include_path megadása után példányosított Zend_Application objektumunk konstruktorában ezt az állományt adtuk meg paraméterül.

library

Ide a projektfüggetlen, általunk készített, vagy third party könyvtárak kerülnek. A Zend Framework-öt akár ide is rakhatjuk, amennyiben nem megoldható a php.ini módosítása. Természetesen ekkor az public/index.php-ben ki kell bővíteni az include_path-ot.

public

A publikusan, PHP nélkül elérhető állományok helye. Itt található a korábban emlegetett index.php, mely alkalmazásunk belépési pontja, valamint ide rakhatjuk a .js, .css fájljainkat, képeinket.

tests

A Zend Framework unit tesztelt library. Amennyiben teszteket szeretnénk írni a saját kódunkhoz, itt megtehetjük.

Futás

Az egyik legfontosabb dolog, hogy megértsük, milyen sorrendben, mely osztályok, objektumok érintésével fut le Zendes alkalmazásunk.

Az entry pointról már volt szó. A Bootstrap.php fájlunk egyelőre üres, mégis működik az egyelőre szegényes funkcionalitású weboldalunk. Nézzük meg a következő képet.

A requestet a router a routing szabályoknak megfelelően értelmezi. A routing végén létrejön a request objetum, melyből megtudhatjuk, melyik modul, controller, action kerül(t) meghívásra, valamint itt érhetjük el az egyéb paramétereket is.

A dispatch folyamat egy ciklusba van ágyazva. Többszöri lefutása csak akkor fog jelentkezni, ha több kérelmünk van, melyeket már kézzel adunk meg. Ilyenekre akkor van szükség, amikor widget-szerűen szeretnénk elhelyezni tartalmakat az oldalon, és ezeket több különböző action állítja elő. Mi az az action?

A dispatch folyamán már létezik a request objektumunk, így a keretrendszer a megfelelő controller osztály, megfelelő metódusához továbbítja a kérelmet. Írjuk be a következő URL-t: http://localhost/~protezis/test/index/index. Semmi sem történik. Pontosabban ugyanazt látjuk, mint eddig. Amennyiben nincs megadva controller, vagy action az URL-ben, úgy azok automatikusan index-re képződnek le. Jelen projektünkben nincsenek modulok, melyek a controllerek feletti magasabb szeparációs réteget alkotnak. Tipikus példa, hogy az adminisztrációs oldalakat, melyeket csak az admin érhet el, külön modulba rakjuk. Amennyiben nem értelmezhető modulnév a request-ből, úgy az default lesz. Nyissuk meg az application/controllers/IndexController.php fájlt, és keressük meg az indexAction() metódust. Írjuk bele:

echo 'Hello World!';

Az oldal újratöltésénél láthatjuk, hogy megjelenik frappáns kis üzenetünk.

Természetesen nem ez a legmegfelelőbb mód arra, hogy üzenetet írjunk ki az oldalra. Az üzenet kiírása a View réteg dolga. Az összes controller osztályban elérhető a view member változó, mely a Zend_View egy példánya, illetve abból öröklődik. Töröljük ki az előbbi beírásunkat, és helyette alkalmazzuk ezt:

$this->view->welcome = 'Hello World!';

Nyissuk meg a application/views/scripts/index/index.php fájlt, és írjuk be a végére:

<?php echo $this->welcome ?>

Az eredmény ugyanaz, azonban a megjelenítés így elkülönül a vezérléstől.

Próbáltam tömören, viszont mégis érthetően megfogalmazni ezt a cikket. Remélem sok embernek sikerült megadnom a kezdőlökést. Szívesen fogadok bármilyen kritikát. Amennyiben hasznosnak találjátok az írásomat, és igény van rá, úgy egy következő cikkben megírhatnánk egy alap autentikációs oldalt.

Hasznos linkek

http://framework.zend.com/docs/quickstart
http://framework.zend.com/manual/en/
http://www.zend.com/en/resources/webinars/framework
http://devzone.zend.com/
http://framework.zend.com/issues/browse/ZF

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.