zondag 5 september 2010

Expert PHP 5 Tools Boek bespreking

Expert PHP 5 Tools - Dirk Merkel

Voor U Gelezen in drie uur (447 pagina's )
ISBN 978-1-847198-38-9
Aanschaf op basis van 'Look inside this book' van Amazon.





Tegenvaller: het is nu gratis beschikbaar via http://www.fileserve.com/file/t8btUdR/Packtpub.Expert.PHP.5.Tools.Mar.2010.rar
Example Source code: http://www.packtpub.com/files/code/8389_Code.zip
Mijn mening: Expert Tools zijn veelal bekend bij 'PHP experts'. De bijbehorende manuals en docs van dit soort tools zijn dan de meest voor de hand liggende ingangen voor een developer. Het is dan ook een hele opgave om daar nog eens een zinvol boek over te schrijven. Echter de heldere samenvattingen en inzichten in dit boek voegen wel een zekere meerwaarde toe. Neemt niet weg dat bepaalde hoofdstukken overbodig zijn doordat deze zaken aanpakken die zich niet in enkele pagina's laten beschrijven (frameworks, UML, Unit testing). Het is wel een prima overzicht voor de groep die meer wil dan coderen alleen en de 'peripherals' wil verkennen.

Samenvatting

Hoofdstuk 1 Code style and Standards
De auteur geeft tamelijk strikte regels over hoe te coderen.
Enkele instructies:
-gebruik 'heredoc' voor lange strings (page 10)
-scheidt de instantiating (constructor) van de initialisatie bij een object (page 19)
-gebruik altijd require_once (page 22)
-Opmerkelijk is dat de auteur er op staat dat files UNIX style zijn dus geen '\r\n'maar enkel '\n'.Daarbij kan via de tool PHP_CodeSniffer de code gecontroleerd worden op afwijkingen en het is maar goed dat daar een eigen 'style' aan gekoppeld kan worden. Welnu, als iedereen op de wereld daaraan voldoet dan kan globaal code sneller geladen worden en kunnen datacenters toe met minder energie en kunnen we zo bijdragen aan het milieu.
Vlug naar het volgende hoofdstuk want dit onderwerp staat altijd garant voor fundamentalistische discussies.

Hoofdstuk 2 Documentation with phpDocumentor

Allereerst een pleidooi waarom inline documentatie behoort tot 'goede' php code en een kleine inleiding tot phpDoc. Niets nieuws onder de zon met betrekking tot de bestaande manuals van phpDoc. Wel is dit een handig en 'comprehensive' hoofdstuk omtrent phpDoc en zeker het naslaan waard. Aardig weetje is het gebruik van customtags (page 92). In een voorbeeld project schets de auteur vervolgens hoe en waar phpDoc ingepast kan worden.

Hoofdstuk 3: The Eclipse Integrated Development Environment

Specifiek over de Eclipse IDE. De auteur stelt dat Ecplipse de meest stabiele, meest gebruikte IDE tool is die ook nog eens probleemloos voor andere talen gebruikt kan worden. Voortgekomen uit IBM is de tool nu in handen van een non-profit organisatie. In een 'quick overview' komen de voordelen langs zoals highlighting, code completion, code assist, workspaces , projects , phpDoc, templates,debugging etc.
Jammer dat de auteur geen andere alternatieven aanstipt.


Hoofdstuk 4: Source Code and Version Control

Een hoofdstuk omtrent source control met focus op Subversion waarvan het online handboek te vinden is op http://svnbook.red-bean.com/
In het kort worden de diverse concepten en definities van Subversion helder neergezet. De svn command-line client wordt besproken compleet met de reference guide en een voorbeeld hoe een project onder source control te starten. Dit wel op basis van wat custom scripts ('hooks') van de auteur en dat maakt het wat minder generiek. Wel biedt dit dan de mogelijkheid om bijvoorbeeld code standards af te dwingen of notifications te verzenden. Het concept branching en merging komt aan bod inclusief een verhelderend diagram (page 181). Dit allemaal weer via de svn commandline. Nb: voor onze problemen met checkouts op Samba shares kan dit wel een goed alternatief zijn. Andere clients worden kort genoemd zoals Tortoise.
Aardig weetje is WebSVN, een mooi project van SVN om diverse zaken van 1 of meerdere repositories te bekijken. Inclusief RSS. Wellicht een handige feature om ook te installeren.
Zie ook http://www.websvn.info/
De 'best practices' noemt de veelgebruikte indeling 'trunks, tags, branches'. Weliswaar niet verplicht maar wel een indeling die wereldwijd gebruikt wordt.
Dit hoofdstuk is niet alleen waardevol als naslag maar geeft ook net wat extra informatie die ook voor reguliere SVN gebruikers handig is.

Hoofdstuk 5: Debugging 197

Alle debugopties in php.ini komen voorbij evenals enkele core php functies die handig zijn bij debuggen. Varieƫrend van var_dump tm get_object_vars. Vreemd genoeg ontbreekt het handige 'get_defined_vars'. Dan een uitgebreid voorbeeld van een eigen debug class.
Net iets te breed uitgesponnen temeer daar ook veel voorbeelden te vinden op http://www.phpclasses.org/ en frameworks in het algemeen deze voorzieningen al bieden 'out of the box'. Dan een specifiek stuk over Zend's XDebug. Zend (en ook Eclipse etc) maken het mogelijk om aan een proces te attachen en vervolgens door de code heen te stappen met breakpoints en dump s van vars en parameters.

Hoofdstuk 6: PHP Frameworks 251

Een lijst met frameworks gebaseerd op het MVC pattern. Genoemd worden Zend, CodeIgniter, CakePHP, YII en Symphony. Kohana (HMVC pattern) wordt niet genoemd. Vervolgens wordt dit hoofdstuk gevuld met een lang Zend example. Gezien de docs van Zend zelf een overbodig hoofdstuk.

Hoofdstuk 7: Testing 291

Verhelderend definitie overzicht van

  • unit testing
  • black or white or gray box testing
  • integrationtest
  • continuous integrationtest
  • regression test
  • system test (ketentest)
  • user acceptance test

Testmethodes op basis van het veelgebruikte PHPUnit framework worden nader toegelicht. Dit aan de hand van een codevoorbeeld met een bepaald zoek algorithme wat we willen testen. Dit laat zien dat Unit testing zeer zinvol is maar ook dat dit een leercurve kent en een behoorlijke tijdinvestering vergt.

TDD of Test driven development is het omgekeerde mechanisme. Schrijf de code welke voldoet aan de test. Het diagram op pagina 322 schetst dit iteratieve proces.

Hoofdstuk 8: Deploying Applications 329

Dit hoofdstuk bevat weinig interessante informatie. Het behelst een simpele applicatie (script met database) welke uitgerold wordt mbv. Subversion en andere tools. Het advies om zoveel mogelijk te automatiseren nemen we natuurlijk ter harte zeker waar het gaat om bijvoorbeeld DB schemas updates. Een build tool met uitgewerkt voorbeeld is 'Phing' (pagina 335)

Hoofdstuk 9: PHP Application Design with UML 363

Een overzicht van 14 UML diagrammen en een beknopte beschrijving van UML met een uitgewerkt voorbeeld. Voegt niet veel toe voor ontwikkelaars die reeds werken met UML.

Hoofdstuk 10: Continuous Integration 395

Het laatste hoofdstuk omtrent 'putting it all together'. Uit de summary: 'Continuous Integration is simply a combination of tasks that you are likely to perform anyway during the development and release of a project. The difference, however, is that with continuous integration, you do it earlier and more frequently. Decreasing the time between automated builds allows you to view the development of the project over time rather than to look at a single snapshot of the code. It allows you to keep a fnger on the pulse of your project and catch any problems early on.'

Geen opmerkingen: