info ät fabercon.fi | 0400 533 978 tai 044 204 2029

Ota yhteyttä

heinäkuu 15.7.2017

PHP, die hard

PHP:n historia ulottuu vuoteen 1994 asti. PHP:n kuolemaa on uumoiltu monta kertaa, mutta uumoilijat ovat olleet väärässä. PHP on kelvoton, sillä ei voi tehdä kunnon koodia, isojen sovellusten tekeminen ylläpidettävästi on mahdotonta. Jos mikä tahansa näistä väitteistä olisi totta, PHP olisi todella hävinnyt jo aikoja sitten. Aikana, jolloin monimutkaisuudesta on alustojen suhteen tullut typerä muoti, PHP on yksinkertainen ja virkistävä poikkeus. Suuri osa web-koodareista on aloittanut tällä teknologialla.

Eikä kyse ole vain pienten sovellusten tekemisestä. PHP:lla on tehty kolme suosituimpien open source tuotteiden joukkoon kuuluvaa sovellusta: WordPress, Drupal ja Joomla. Open source tuotteiden kaksi ylivoimaista alustaa ovat edelleen Java ja PHP. Kahden indeksisivuston, Tiobe ja PYPL, perusteella PHP on edelleen aivan suosituimpien kielten, tai paremminkin alustojen joukossa. Kaikki alan pioneeritekniikat eivät ole tässä onnistuneet.

Miksi PHP kestää trendivouhkannasta toiseen? Vahva asema, minkä PHP sai web-aikakauden alussa selittää vain osan. LAMP (Linux, Apache, MySQL ja PHP) yhdistelmä kantaa edelleen. Apache on suosituin web-serveri, Linux suosittuin serverikäyttöjärjestelmä ja MySQL varmasti yksi suositummista tietokannoista edelleen. Tietysti hyvin joustava PHP toimii muidenkin vastaavien tekniikoiden kanssa.

On selvää, että PHP:ssa on onnistuttu tekemään jotain todella hyvin. Seppien mielestä PHP:n ansio on yksinkertaisuudessa, jonka ansiosta kynnys aloittaa sillä koodaaminen on todella matala. Tähän liittyy muuttumattomuus, vaikka kieli on kehittynyt, kuin C:sta C++:aan, on alusta silti kuin kahdenkymmenen vuoden takaa. Perusidea on kantanut läpi vuosikymmenten hämmästyttävän hyvin.

Kuva:PHP sovelluksien vanha rakenne

Ongelmana on pidetty sitä, että PHP-sovelluksilla ei ole rakennetta, ja siksi isoista sovelluksista tulee vaikeita ylläpitää. PHP vaatii tässä mielessä tekijältä paljon, arkkitehtuuri pitää miettiä etukäteen ja noudattaa sitä hyvin orjallisesti koko ajan. PHP antaa tekijälle täysin vapaat kädet, voit koodata sillä hyvin tai huonosti.

Miten teet hyvin ylläpidettävän PHP-sovelluksen? Aiheesta on kirjoitettu yllättävän vähän netissä. Suurin ongelma on seppien mielestä se, että samassa PHP-tiedostossa (.php) voi olla HTML:aa, Javascriptia ja PHP koodia. Tämä sama ongelma on monissa muissakin serveripään web-tekniikoissa, kuten Javan JSP:ssa ja .NETin ASP.NETissa. Jos nämä osaset todella ovat samassa tiedostossa, vaara koodin muuttumisesta epäselväksi, pahimmillaan täysin ylläpitämättömäksi puuroksi on varteenotettava. Tätä vaaraa ei pidä väheksyä lainkaan, emmekä pyri siihen.

Entäpä jos tekisi sovelluksen ihan eri tavalla?

Ensiksi, aloita sijoittamalla toiminnot eri tiedostoihin ja hakemistoihin seuraavasti: (a) PHP, joka sisältää HTML:n, eli käyttöliittymäkoodin. Pyri puhtaaseen HTML-koodiin, käytä PHP:n tagituksen tukea vain tarvittaessa; (b) Javascript, laita erillisiin js-tiedostoihin. Älä laita PHP-tiedostoon, HTML-koodin sekaan, riviäkään Javascript-koodia; (c) PHP:n osalta kaikki muu kuin käyttöliittymäkoodi omiin moduleihin. Tähän osaan kuuluu ainakin logiikka, datan käsittely ja palvelurajapinnan toteutus.

Toiseksi, jaa PHP-koodi edelleen osakokonaisuuksien perusteella eri hakemistoihin ja toiminnot eri moduleihin. Tee yleiskäyttöistä koodia aina kun voit, esimerkiksi palvelukutsujen käsittely kannattaa viedä palvelimelle aina saman metodin kautta. Varo ylimääräistä boilerplate-koodia. Tee tasorakenne selväksi, erota sovelluslogiikka ja datan käsittely. Kun teet nämä huolella, ei ole mitään perusteita väittää, ettei PHP:lla voisi tehdä isoja sovelluksia ylläpidettävästi.

Kolmanneksi, siirrä dataa käyttöliittymän ja palvelimen välillä vain ja ainoastaan Ajax-tekniikalla. Perinteinen tapa, jossa käyttöliittymän mukana tuodaan myös sivun aloitusdata on yksi syy sotkuiseen koodiin. Ajax-toimintoa ei voi välttää, se on nykyisin de facto -standardi, ja sillä voidaan aina hakea data sivulle heti latautumisen jälkeen. Yksi tapa on aina selkeämpi kuin kaksi tapaa. Sovelluksen selkeyden suhteen muutos parempaan suuntaan on dramaattinen, kun käytät vain Ajaxia datan siirtotekniikkana. JSON-tuki on PHP:ssa suoraan, ilman ylimääräisiä kirjastoja. Pidä kuitenkin JSON vain siirtoformaattina.

Kuva:PHP sovelluksien parempi rakenne

Näitä kolmea ohjetta noudattaen sovelluksen ymmärrettävyys ja ylläpidettävyys kasvaa merkittävästi. Käyttöliittymä on täysin erillään serveripuolen logiikasta (vaikka molemmissa käytetään PHP:ta), palvelukutsujen tekeminen on selkeää ja serveripuolen saa vapaasti jakaa toiminnallisuuden vaatimiin kokonaisuuksiin.

Jokainen voi myös havaita PHP-sovelluskehityksen keveyden. Apache-serveri ja Netbeans IDE – varmasti yksi parhaista PHP:n kehitysympäristöistä – muodostavat todella hyvän parin. Debuggaus on vaivatonta, voit debugata käyttöliittymäkoodia selaimessa (seppien suositus) tai Netbeansissa, jossa tietysti PHP-koodin debuggaus tapahtuu. Alasin, leka ja ahjo, ei seppä muuta kaipaa.