lørdag 21. mai 2011 PHP Webutvikling
Jeg har tidligere hevdet at utviklere som ønsker å lære seg et dynamisk programmeringsspråk bør holde seg langt unna PHP. Jeg tviler på at det finnes noe annet språk hvor det er skrevet like mye drittkode. Likevel tok jeg meg selv i å si på et forum nylig at jeg nå faktisk vurderer å anbefale dem som ønsker å begynne med webutvikling å starte med nettopp PHP.
Denne artikkelen handler om hvorfor jeg har endret holdning.
Som fersk IT-konsulent ble jeg kastet ut i et webprosjekt som skulle benytte PHP. På det tidspunktet hadde jeg bare erfaring fra Java og VB6, og hadde aldri hørt om PHP engang. Men det var lett å plukke opp språket, og jeg var produktiv allerede første dag.
Det er vanskelig å huske hva jeg følte for språket dengang, men jeg er ganske sikker på at jeg produserte en god del grisekode. Rammeverket hjalp meg ikke på noen måte å strukturere koden min orntlig, og det ble mye inline blanding av server-kode og HTML-markup.
Etter dette brukte jeg PHP sporadisk i noen år til å utvikle diverse, enkle registreringsskjema, spørreundersøkelser og lignende. De siste 6 årene har jeg ikke rørt språket i det hele tatt (bortsett fra en og annen minimal tweak på denne bloggen). Jeg har hørt at det har kommet til endel objektorienterte muligheter jeg ikke hadde (eller visste om) den gang, men har likevel ment at PHP stort sett er noe man bør holde seg unna om en har muligheten.
PHP har derimot noen fordeler man ikke bør avvise sånn helt uten videre. Den viktigste er at plattformen har en enorm spredning. Det finnes knapt nok en webserver i denne verden hvor man ikke kan kjøre PHP – i 2007 var PHP i bruk på 75% av alle webservere. Og i mange tilfeller, som hvis man leier plass på en delt linux-server, kan PHP være den eneste muligheten man har for å lage dynamiske websider.
Det finnes derfor også veldig mange PHP-utviklere, og det er lett å finne hjelp på nettet når man trenger det. Ulempen er at det finnes veldig mange “dårlige” PHP-utviklere, og veldig mange stygge eksempler på kode som er både vanskelig å forstå, er vanskelig å vedlikeholde, og som har andre alvorlige svakheter.
Språket er derimot veldig godt dokumentert på php.net. Det har også utviklet seg endel de siste årene; i versjon 5.3 (i 2009) fikk man f.eks. namespaces og støtte for closures / anonyme funksjoner.
Grunnen til at jeg nå går tilbake på det jeg tidligere har sagt, og vurderer PHP som en ok plattform å starte på, er at jeg har oppdaget at det har dukket opp endel utviklingsrammeverk på toppen av PHP. CodeIgniter er et eksempel på et av disse, som er et Model-View-Controller-rammeverk som minner svært mye om Ruby on Rails. Symfony, CakePHP og Zend Framework er tre andre jeg har funnet i samme kategori, og det finnes sikkert flere.
Disse rammeverkene, som selvfølgelig er gratis, oppfordrer til utvikling av websites etter samme fornuftige malen som de populære rameverkene i f.eks. Ruby og Python. Det betyr at man går bort fra den grisete “smørja” som lenge har vært normen i PHP-verden – det er i alle fall det jeg håper!
Ikke at MVC er løsningen på alle problemer, eller den beste strategien for alle webapps. Men det representerer en felles forståelse av god kodestrukturering for dagens webutviklere, og nybegynnere bør etter min mening begynne der.
Foreløpig har jeg bare sett et par tutorials, men jeg har nå tenkt å teste ut ett eller flere av disse rammeverkene, og kanskje ta dem i bruk til noe fornuftig.