Aug 19, 2011

NetBeans vs CodeCoverage

Jelen posztban a NetBeans és a PHPUnit kapcsolatáról lesz  szó. Régóta ki szerettem volna próbálni, hogy mit is tud az egyik kedvenc IDE-m kezdeni az egységtesztelésből már ismert Code Coverage-el. Pár hete le is töltöttem a 7.0-s változatot, de mire odáig jutottam hogy ténylegesen rászánjam azt a 2x10 percet a dologra, már ki is jött a 7.0.1-es (Aug1.), így már azon teszteltem (6.9-es verziótól már tartalmazza ezt a feature-t).
 Kezdetben van nekünk egy "User" osztályunk két metódussal. A fontos most a "setName()", amely egy paramétert vár ("name), ami ha nem "string" típusú vagy ha az, de a hossza kisebb, mint három, akkor kivételt dob a függvény. Előbbi esetben a kivétel "InvalidArgumentException", míg utóbbiban "LengthException" típusú. Amennyiben nincs kivétel, a "name" attribútum értékül kapja a paraméterként adottat.


User osztály

Következő lépés, hogy létrehozzunk egy tesztet az említett osztály "setName" metódusára. Az alábbi módon könnyíthetjük meg a munkánkat:

Unit test generálás

Elkészült a tesztelő osztályunk mindenféle földi jóval. A metódusok helyesen "incomple" jelzést kaptak.

UserTest osztály

Visszamegyünk a "User" osztályunkra, ahol meg szeretnénk nézni, hogy az apró kódunk hány százalékát fedtük le eddig egységteszttel. Kemény 7.69%-on vagyunk, amit teljes egészében a konstruktor tesz ki. Ahogy a képen is láthatjuk a konstruktor zöld színű, míg az eddig le nem fedett részek pirosak.

CodeCoverage 7.69%

 Nekünk ez a lefedettség kevés (A 7.69% valóban kevés lehet, de halkan megemlíteném, hogy a 100%-os lefedettséget senki se szeresse elérni. Külön cikket megér, van is róla pár angol nyelvű, érdemes böngészni), így írunk egy tesztet a "setName" metódusra. Ebben a tesztben egy nem "string" típusú paramétert adunk át a függvénynek, amire válaszul InvalidArgumentException-t várunk (expected annotáció a kommentben).

testSetName


Miután kész a függvényünk, visszatérve a "User" osztályunkhoz láthatjuk, hogy az említett kivételt le is fedtük a tesztünkel. 30.77% ami a mai napra nekünk elég is, hiszen nem szeretnénk túlzásba vinni a kódolást a 28° melegben ezen a szép napon.

CodeCoverage 30.77%

Jul 14, 2011

php oauth

Épp most tettem ki github-ra egy a PECL-oauth csomagra épülő könyvtárat,  amellyel egyszerűen tudunk PHP alól access token-t szerezni a különböző oauth belépést támogató alkalmazásokba, mint például a twitter vagy a facebook.
Azzal a céllal készítettem a csomagot, hogy egyszerűen hozzá tudjuk adni a már meglévő alkalmazásunkhoz és kevés kódolással megvalósulhasson a beléptetés. Egy másik fontos szempont volt a bővíthetősége, mégpedig hogy egy meglévő sémát felhasználva tudjunk más "app"-okat hozzátenni a könyvtárhoz. Ehhez az alábbi struktúrát használom:




A könyvtár itt érhető el: link. (Szükséges hozzá a már említett pecl oauth csomag)

Jul 6, 2011

FUEL(PHP) keretrendszer

FUEL framework
Egy viszonylag új keretrendszert szeretnék röviden ismertetni. Mégpedig a FUEL nevezetűt, melynek a fejlesztése 2010 év vége felé kezdődött. Az 1.0-s verzió még nem végleges, de már RC3-nál járnak a srácok.
Ez egy, a körülötte lévő közösség által is irányított PHP-s keretrendszer. Céljuk egy egyszerű, de rugalmas keret kialakítása, amely több másik rendszertől is ellesi a jobb ötleteket, megvalósításokat (pl. Kohana, CodeIgniter) és ezeket a sajátjaikhoz társítják. A keretrendszer az 5.3-as PHP-t veszi alapul, így annak minden előnyét kihasználja.

Főbb feature lista:

(Persze a "core" osztályok közt megtalálhatóak az általános "helper"-ek)

Akinek tetszik a rendszer, az bátran be is kapcsolódhat a fejlesztésbe: GitHub, Fórum. Akit pedig ennél bővebben érdekel, az minden infot megtalál az oldalon.

Parser package:
A parser package-ről írnék még néhány sort, mert ennek a fejlesztéséhez magam is hozzátettem egy kicsit. Ez egy több template kezelő könyvtárat is támogató csomag. Kiterjesztve, kiegészítve a core View osztályt lehetővé teszi, hogy nagyon egyszerűen használhatóak legyenek a különböző sablonozó nyelvek (pl: Twit, Dwoo, Haml). Ehhez a csomaghoz járultam hozzá egy Smarty konfiguráció beépítésével, amely be is került a developer ágba.

Vélemények a keretrendszerről?

Jun 24, 2011

Wsdl készítés NuSoap alapokon

Az előző posztban "Zendéknél" jártunk Wsdl ügyben, míg most a NuSoap-ot vesszük kicsit szemügyre. Ez a library akkor lehet nagyon hasznos számunkra, ha egyszerűen szeretnénk komolyabb struktúrát leírni. Gondolok itt főleg az egyes függvények kimenetére, amely sok esetben tartalmazhat akár hierarchikus adatszerkezetet is. Mindezt egy megfelelő xsd-vel állítjuk majd elő "document" stílussal és "literal" kódolással.
A kódot nem teljesen kezdőknek szánom, hanem olyanoknak akik már legalább egyszer láttak/használtak NuSoap-ot (csak például egyszerűbb funkcionalitással). A következő típusok kerülnek bemutatásra röviden: simpleType, complexType, Enum. Lássuk a kódot!

May 16, 2011

Wsdl készítés Zend alapokon



Update:
A Zend_Soap_Wsdl osztályt az alábbi helyen érhetitek el. A fent kiterjesztett osztály az rpc stílusú Wsdl előallítását teszi lehetővé, ami sok esetben kevés lehet. Gondolok itt a dokumentum stílusra vagy éppen szükségünk lehet xsd előállítására is. Ilyenkor jöhet jól a Zend_Soap_AutoDiscover osztály, amely legenerálja nekünk a megadott paraméterek szerint a megfelelő Wsdl-t (docblock-ok használatára figyeljünk, ugyanis ezek fontos szerepet játszanak a generálásban).