Forest header image

Symfony Finland
Random things on PHP, Symfony and web development

PHP ja Symfony tarjoavat vakautta ja joustavuutta

PHP on luultavasti maailman suosituin palvelimilla toimiva ohjelmointikieli. Se on ollut olemassa jo yli kahdenkymmenen vuoden ajan ja vekkoteknologioiden kehitystahdin huomioon ottaen tämä on melkoinen saavutus. PHP nousi suosioon 2000-luvun alkupuolella ja on yhä laajasti käytössä ympäri maailman.

Avoimen lähdekoodin teknologiana jakaminen on aina ollut luonnollinen osa PHP-kielen kanssa työskennellessä. Alkutaipalellaan PHP ei tarjonnut mitään selkeää rakennetta ohjelmakirjastojen ja komponenttien jaksamiseen. Valmista koodia oli kyllä tarjolla, mutta sen käyttöönotto ja ylläpito oli aina satunnaista.

Vuosien varrella PHP:n kehittäjäyhteisöllä on ollut hankkeita kuten PEAR, eri sovelluskehyksiä ja sovelluksia. Jokainen näistä on kuitenkin käyttänyt omaa koodiaan ja omia toimintatapojaan. Tämä johti siihen että samoja perusongelmia ratkottiin kerta kerran jälkeen uudelleen.

Useat tahot myös kehittivät uudelleenkäytettäviä komponenttikirjastoja, joista olisi helppo poimia yksittäisiä osia oman sovelluksen käyttöön. Norjalainen eZ Systems oli eZ Component kirjastonsa kanssa edelläkulkija, mutta tämä hanke kompastui siihen ettei komponenttikirjaston jakeluun ei ollut selkeää mekanismia.

PHP tänään - ja kuinka tänne päästiin

Joukko PHP:llä kirjoitettuja sovelluskehyksiä työstäneet kehittäjät päättivät yhdessä järjestäytyä. PHP-FIG (PHP Framework Interop Group) perustettiin 2009. Tämä ryhmä on luonut PHP-yhteisölle yhteisiä käytäntöjä (PHP Standard Recommendation, PSR). Nämä kattavat useita perustavaa laatua olevia toimintoja kuten luokkkien automaattinen lataaminen sekä syntaksisuositus.

Nämä käytännöt yhdessä itse PHP-kielen kehityksen kanssa johtivat kehitystä nykypäivän PHP-ohjelmistokehitykseen. Käytäntöjen lisäksi tarvittiin vielä stardardoitu jakelumekanismi, joka huolehtisi komponenttien riippuvuuksista sekä jakelusta. Composer pakettihallinta sekä Packagist pakettihakemisto olivat täydensivät modernin PHP-kielen nykytilaansa.

Nyt PHP-yhteisöllä on käytössään yhteiset työkalut koodin jakamiseen, asennukseen ja käyttöönottoon. Useat PHP:lla kirjoitetut merkittävät ohjelmistot, kuten Drupal 8, käyttävätkin nyt enenevissä määrin valmiita komponentteja. Nämä komponentit toimivat yhdessä vanhan koodin osana, mutta vähentävät samojen ongelmien ratkaisua.

Modernit PHP-ohjelmistokehiykset ovat ikäänkuin pohjalevy, johon liitetään yksittäisiä komponentteja. Valittuaan pohjalevyn, voi kehittäjä lisätä ja vaihtaa haluamiaan komponentteja luodakseen sovellukseen halutut toiminnallisuudet. Pohjalevyjä, eli ohjelmistokehyksiä, on useita erilaisia - osa niistä on hieman jäykempiä ja osa joustavampia.

Joustava pohja sopii hyvin projekteihin joiden oletetaan pysyvän kohtuullisen yksinkertaisina ja elinkaareltaan lyhyinä. Jäykemmät pohjat pakottavat sovelluskehittäjät toimimaan tietyllä tavalla ja sopivat täten paremmin suuriin projekteihin joiten elikaari on pitkähkö.

Symfony komponentit ovat yksittäisiä ohjelmistoja jotka on rakennettu hyvin määritellyn ongelman ratkaisuun. Symfonyn file-komponentti esimerkiksi huolehtii ainoastaan tiedostojen löytämisestä tiedostorakenteesta. Mikäli useampi sovellus tarvitsee sama perustoiminnallisuutta, päästään yhteisen koodin jakamisella ja ylläpidolla parempaan lopputulokseen. Lisäksi kehittäjät voivat käyttää tuttuja käytäntöjä projektista ja tuotteesta toiseen siirtyessä.

Symfony sovelluskehys on määritelty tapa (ja hieman koodia) joilla luodaan pohja sovellukselle. Symfony Framework pakottaa siis kaikille sovelluksille yhtenäisen tiedostorakenteen ja ohjelmointistandardit. Tämä vähentää yksittäisten kehittäjien tarvetta keksiä pyörää uudelleen oman makunsa mukaan ja tekee projektista toiseen siirtymisestä luontaisempaa.

Symfony sovelluskehykselle on myös paketoituja toiminnallisuuksia, ns. bundleja. Bundlet käyttävät komponentteja korkeamman tason toiminnallisuuden luomiseen. Yksittäinen komponentti voi esimerkiksi mahdollistaa viestinnän hakumoottorin kanssa, mutta bundle rakentaa tämän päälle indeksointi-toiminnallisuuden sekä hakukäyttöliittymän.

PHP ja Symfony tulevaisuudessa

Teknisen rakenteen lisäksi Symfony sovelluskehys tarjoaa vakautta kehittäjien lisäksi liiketoiminnan edustajille. Osa Symfonyn versioista on pitkän elinkaaren versiota (Long Term Support, LTS). Näitä versiota tuetaan yhteisön puolesta useita vuosia. Tämä on yksi syistä miksi useat yritykset kuten Trivago, Fox sekä Spotify ovat valinneet Symfony Framework -alustan. Osa sovelluskehyksistä kehittyy nopeaan tahtiin ja tekee kompromisseja laadun ja ennustettavuuden suhteen.

PHP itsessään on kypsynyt vakavastiotettavaksi ohjelmointikieleksi joka mahdollistaa monimutkaisten ja helposti ylläpidettävien sovellusten kehittämisen. Samalla se ei kuitenkaan ole menettänyt alkuperäistä valttiaan, eli suoraviivaista ohjelmointitapaa ja helppokäyttöisyyttä. Vuonna 2015 julkaistava PHP:n versio 7 sekä Facebookin vaihtoehtoinen PHP-moottori HHVM varmistavat että itse PHP-kieli kehittyy ja pysyy ajan hermolla.

On syytä huomata että web-teknologiat kehittyvät nopeaa tahtia ja takuuta huomisen parhaista työkaluista on mahdotonta ajaa. PHP ja Symfony takaavat varman alustan liiketoimintakriittisille sovelluksille, mutta kaikkeen ne eivät välttämättä ole paras mahdollinen vaihtoehto. Onkin suositeltavaa että sovellus kirjoitetaan niin että sen osia voi vaihtaa ja esimerkiksi tietovaraston vaihtaminen MySQL tietokannasta MongoDB dokumenttitietokantaan on mahdollista.

Itse PHP-kieltä täydentää usein Node.js ja JavaScript joilla voidaan tehdä esimerkiksi vasteajaltaan mahdollisimman nopeita palveluita. Itse sisällön hallinta ja olennaisin ohjelmakoodi voidaan kuitenkin pitää Symfony-sovelluksella ja valitussa tietovarastossa.

20-vuotias PHP-kieli sekä 10-vuotias Symfony ohjelmistokehys tarjoavat ohjelmistokehittäjille ja liiketoiminnalle tehokkaan ja joustavan alustan. Nyt ja tulevaisuudessa.


Written by Jani Tarvainen on Saturday August 1, 2015
Permalink -

- Mikä on Symfony ja kuka sitä käyttää Suomessa? »