Miről is leszittma szó?Magic Method-okInterface-kKivételkezelésStandard PHP LibraryTervezésimintákMűveletek objektumokkalReflection APIEgységtesztelés
3.
Magic Method-okSpeciális helyzetekben,automatikusan hívódó metódusokHasonlóak az EJB életciklus metódusokhoz, de itt nincs annotációA __ névtér van fenntartva számukra
4.
MM ÉletciklusmetódusokObjektumok életesorán hívódnak meg automatikusan__constructOsztály példányosításakor hívódik meg. __destructA GC hívja megNem lehetünk biztosak benne
MM SerializálásEzek különbözőhook-ok, melyeket a serializálás hív meg, amennyiben léteznek__sleepHasonlóan a Java „transitive” módosítójához: megszűri az attribútumokat, és lezárja a kapcsolatokat__wakeupDb kapcsolatok, stb. visszaállítása, amik elvesznek a mentés során__set_stateOsztály var_export-jakor hívódik meg, a kimenetét alakítja át
8.
MM MetódushívásokNem létezőmetódusok hívásakor lefutó magicmethod-ok__callNem létező tagmetódus esetén__callStaticNem létező statikus metódus esetén__invokeFüggvényként hívódó osztály esetén
9.
MM Ésatöbbi__autoloadNem betöltöttosztály esetén hívódik__cloneKlónozásnál hívódik meg, segít az újonnan létrejött osztály paraméterezésében__toStringHa egy objektumot string-ként próbálunk kezelni, itt állíthatunk össze string (!) kimenetet
Származtatott kivételekAz Exceptionosztály leszármaztathatóA catch blokk „IS A” vizsgálatot végez, és csak az első igaz feltételbe megy bele
15.
Továbbdelegált kivételekA kivételtnem kötelező az adott blokkban lekezelni (vagy egyáltalán lekezelni)Ha nincs elkapva, a hívási fán felfele delegálódik
16.
Standard PHP LibraryInterface-kés osztályok gyűjteményeStandard megoldásokNincs szükség külső extension-raJava SDK-hoz hasonlóan
SPL AdatstruktúrákAz SPLbiztosítja néhány elterjedt adatstruktúra implementációjátPéldául: SplStack, SplQueue (duplán láncolt listával), SplHeap (Min és Max változattal is), SplObjectStorage, SplDoublyLinkedList
19.
SPL KivételekAz SPLbiztosít néhány „szabványos” kivételt az általános esetekrePéldául: BadMethodCallException, InvalidArgumentException, OutOfRangeException, RuntimeException, LogicException, OverflowException
SPL AutoloadDinamikus osztálybetöltőmechanizmusAz SPL biztosít hozzá felületet, amelyen keresztül befolyásolhatóFunkciók:spl_autoload_callspl_autoload_extensionsspl_autoload_functionsspl_autoload_registerspl_autoload_unregisterspl_autoload
Műveletek objektumokkal: MásolásÚjreferencialétrehozásaKlónozásShallowcopy (default): az attribútum objektum-mutatója másolódik le: ugyan arra az objektumra mutat, mint az eredetiDeep copy: az attribútum objektum állapota másolódik le
Reflection APIOsztályok ésfüggvények gyűjteményeNincs szükség külső extension-raAz OOP szabályainál nagyobb hozzáférést nyújtanak a rendszer részeihezReverse-engineering-hez kiváló
34.
Reflection API részeiReflectionClass:az osztályokrólReflectionFunction: a funkciókrólReflectionMethod: az osztálymetódusokrólReflectionObject: az objektumokrólReflectionParameter: hívási paraméterrőlReflectionProperty: az attribútumokról…
EgységtesztelésA komplex munkaminden esetben hibával járA hibák számát és hatását minimalizálni kellVállalati standard: 15-50 defektus / KLOCEnnek költséghatékonynak kell lennie
37.
EgységtesztelésHa a részekjók, akkor a részek egésze is lehet jóAz egységbezárás lehetőséget ad arra, hogy a részeket teszteljükEszköz: egységtesztelés
38.
PHP UnitSebastian Bergmann(thePHP.cc)Xunit családDe facto PHP szabványKönnyen telepíthető és kezelhetőAssert-ekkel dolgozikPl.: assertArrayHasKey, assertEquals, assertFalse, assertFileExists, assertGraterThan, assertNull, assertRegExp, assertStringStartsWith