Forest header image

Symfony Finland
Random things on PHP, Symfony and web development

Symfony ja sisällönhallinta: Vertailussa Drupal 8, eZ Platform ja Bolt CMS

Jos työskentelet PHP-kielellä kirjoitettujen sisällönhallinnan työkalujen parissa, olet varmaankin kuullut Symfonystä. Vaikka se on vain osa laajempaa PHP:n renessanssia, on se tätä edustavana brändinä tutuin sekä kehittäjille, että liiketoiminnan edustajille.

Symfonyn käyttäminen on käsitteenä kuitenkin melko epäselvä eikä aivan yksioikoinen. Tässä artikkelissa tutustutaan kuinka kolme eri PHP sisällönhallintajärjestelmää on ottanut Symfonyn käyttöön. Tarkoitus ei ole verrata järjestelmien ominaisuuksia tai markkinaosuuksia.

PHP sovelluksien parissa työskennelleet kehittäjät ovat pitkään ratkoneet samoja ongelmia. PHP-kielen, työkalujen ja kehittäjäyhteisön viimeaikaisten ponnistusten ansiosta koodin jakaminen avointen lähdekoodin projektien kesken on helpompaa kuin koskaan.

Yhteiset käytännöt, automaattinen riippuvuuksien hallinta sekä jaettu sivupohjakieli auttavat kehittäjiä vaihtamaan sovellusalustasta toiseen helpommin kuin aiemmin. PHP sisällönhallintajärjestelmien kehittäjät ovat kuitenkin yhä jakautuneita eri leireihin.

Stereotyyppisesti voi sanoa että näissä leireissä järjestetään "VasaraPäiviä", joissa esitellään tapoja saada kaikki asiat näyttämään nauloilta. Tämän jälkeen taputellaan kavereita selkään Ainoan Oikean™ järjestelmän valinnasta. Tämä on ihan luonnollista eikä uniikkia avoimen lähdekoodin ympäristölle - vannovathan jotkin sokeasti esimerkiksi tietyn automerkin nimeen. Kannattaa huomata että tällöin on vaara elää yhteisön kuplassa.

Kun yhdistetään termin "Symfonyn käyttö" ja yllä kuvatun kaltaiset kuplat on asiaan vihkiytymättömien (usein asiakkaiden) hankala saada objektiivista kuvaa mitä tämä missäkin tapauksessa tarkoittaa ja mitä etuja ja/tai haittoja valitulla käyttötavalla on.

Mikä Symfony oikeastaan on?

Symfony on kokoelma uudelleenkäytettäviä PHP-ohjelmistokomponentteja, jotka toteuttavat erittäin tarkkaan määritellyn tehtävän. Kun sovellusten kesken käytetään samoja komponentteja, voivat kehittäjät olettaa että nämä komponentit toimivat samalla tavalla sovelluksesta toiseen. Lisäksi tekninen laatu paranee kun komponentteja käytetään suuremmalla mittakaavalla - virheet paljastuvat helpommin ja niitä korjaamaan on käytössä laajempi joukko ihmisiä.

Komponenttikirjaston lisäksi Symfony kattava sovelluskehys (Symfony Full Stack Framework), joka mahdollistaa sovellusten (kuten esimerkiksi sisällönhallintajärjestelmän) luomisen valmiiksi määritellyn koodirakenteen ja käytäntöjen päälle. Mikäli haluat tietää lisää Symfonystä, lue tämä artikkeli tai ehdotus kuinka opiskella sitä vaiheittain.

Alla käydään nopeasti läpi kolme eri avoimen lähdekoodin sisällönhallinnan järjestelmää jotka käyttävät Symfonya tavalla tai toisella:

  • Drupal 8 - Päivittää vanhaa koodia ottamalla Symfonyn komponentteja osaksi sovellusta
  • eZ Platform - Sisällönhallintajärjestelmä on saneerattu kokonaisuudessaan Symfony Sovelluskehyksen päälle
  • Bolt CMS - Rakennettu alusta lähtien kevyen Silex sovelluskehyksen päälle

Drupal 8 - Komponentteja osaksi vanhaa koodia

Drupal on erittäin suosittu sisällönhallinnan järjestelmä, jota käytetään laajasti myös varsinaisten verkkosovellusten rakentamiseen. Se on vuosien saatossa rakentunut melko kattavaksi työkaluksi kopioimalla ominaisuuksia kuten joustavan sisältömallin, sekä monikielisen sisällönhallinnan periaatteita kehittyneemmistä järjestelmistä.

Drupalin kehitystiimi päätti ottaa Symfonyn käyttöön vuonna 2012. Drupalin kehitteillä oleva versio 8 sisältää yhä paljon vanhaa koodia ja käytäntöjä, mutta osa näistä on korvattu komponenteilla Symfonystä ja muista PHP yhteisön projekteista.

Drupalin tapauksessa käytetyt komponentit edustavat järjestelmän ydintoimintoja kuten reititystä, HTTP viestintää sekä sivupohjissa käytettyä kieltä (Twig). Symfony on siis merkittävä osa Drupalin versiota 8.

Drupalin versiolla 8 kehittäessäsi käytössäsi on Drupalin määrittelemät koodirakenteet ja ohjelmointikäytännöt. Useat konseptit ja komponentit ovat kuitenkin tuttuja kehittäjille, jotka ovat aiemmin kehittäneet sovelluksia Symfonyllä. Vuosien kehitystyön jälkeen Drupal 8 on tarkoitus julkaista vuonna 2015.

Lue lisää Drupalin versiosta 8

eZ Platform - Symfony sovelluskehykseen saneerattu

eZ Platform (ennen eZ Publish) on ominaisuuksiltaan kattava sisällönhallintajärjestelmä, jota on kehitetty vuodesta 1999. Järjestelmän pääkehittäjä eZ Systems päätti vuonna 2012 siirtää sovelluksen kokonaisuudessan Symfony sovelluskehyksen päälle. Siirtymävaiheen ajaksi luotiin kerros jolla vanhaa sovellusta saattaa käyttää Symfonyn sisältä.

Symfony sovelluskehyksen päälle rakennettu järjestelmä antaa mahdollisuuden käyttää tämän alustan kaikkia ominaisuuksia. Monet rutiinitoiminnot kuten välimuistit, tiedostojen hallinta sekä kuvien skaalaus on siirretty sisällönhallintajärjestelmän kehitystiimiltä Symfony laajennuksien vastuulle. Lisäksi esimerkiksi käyttäjäistunnot sekä pääsynhallinta käyttävät sovelluskehyksen toiminnallisuutta.

eZ Platformin kanssa työskentelet Symfony 2 sovelluskehyksellä rakennetulla sovelluksella, jossa on sisäinen rajapinta sisältörakenteen lukemiseen ja muokkaamiseen. Sovelluksen rakenne ja toiminnallisuudet kuiten käännökset ja reititys vastaavat täysin muita Symfony sovelluskehyksellä tehtyjä projekteja.

Lue lisää eZ Platformista ja Symfony sovelluskehyksestä

Bolt CMS - Kevyen Silex sovelluskehyksen CMS

Bolt CMS on sisällönhallintajärjestelmä joka on rakennettu Silex sovelluskehyksen päälle. Silex on kevyt web sovelluskehys joka on rakennettu Symfony komponenteilla. Sen inspiraationa on toiminut yksinkertaisuudestaan kiitetty Rubyn Sinatra. Silex ei määrittele sinulle tarkkaa tiedostorakennetta tai koodausmääritelmä, mutta mahdollistaa sovellusten kehittämisen erittäin nopeasti.

Vaikka Silex onkin kevyt sovelluskehys, jakaa se useita ominaisuuksia edellä esiteltyjen vaihtoehtojen kanssa. Esimerkiksi sivupohjien kielenä Boltissakin on Drupalista ja eZ Platformista tuttu Twig. Käännösten luominen vastaa myös Symfony sovelluskehystä.

Bolt CMS:n kanssa työskennellessäsi laajennat olemasssa olevaa Silex sovellusta. Oppimasi taidot pätevät suoraa mihin tahansa Silex projektiin.

Lue lisää Boltin kehittäjädokumentaatiosta sekä Silexin sivustolta

Symfonyn käyttöönoton kritiikki

Maailman suosituimman PHP sisällönhallintajärjestelmän, WordPressin, projektin johtajalta kysyttiin tuleeko WordPress ottamaan käyttöön Symfonyn komponentteja: http://wordpress.tv/2015/07/04/matt-mullenweg-keynote-qanda-wordcamp-europe-2015/ (kysymys kohdassa 15:30). Hän vastaa että suunnitelmissa ei ole tehdä tämän kaltaisua muutoksia - tai muutakaan merkittäviä muutoksia järjestelmän koodipohjaan.

Ottaen huomioon WordPressin lupauksen takaisinpäin yhteensopivuudesta tämä on ymmärrettävää. Mutta väitettä siitä, että yksittäisten komponenttien käyttöönotto rajoittaa niiden vaihtamista ei kannata niellä pureksimatta. Etenkin kun WordPressin sisällönhallinnan käyttöliittymässä on erittäin vahva riippuvuus muun muassa jQuery JavaScript-kirjastoon.

Yhteenveto

Toivottavasti ymmärrät tämän artikkelin luettuasi hieman enemmän mitä Symfonyn käyttäminen sisällönhallintajärjestelmässä voi käytännössä tarkoittaa.

Näiden esimerkkien lisäksi monet muut PHP CMS:t ovat ottaneet käyttöön jaettuja komponentteja. Esimerkiksi Concrete5 käyttää sekä Zendin että Symfony projektien komponentteja ja esimerkiksi October CMS rakentuu kokonaan Laravel sovelluskehyksen päälle. Laravel sovelluskehys puolestaan käyttää osaa Symfonyn komponenteista. Kehitteillä on lisäksi mielenkiintoisia sisällönhallinnan sovelluskehyksiä kuten Sulu.

PHP maailman ulkopuolelta, SiteCore on mielenkiintoinen esimerkki siitä kuinka .NET MVC sovelluskehys ja sisällönhallinta toimivat yhdessä.

Yksi juttu vielä: Symfonyn tai muiden modernien PHP työkalujen käytöstä ei ole loppukäyttäjälle mitään välitöntä hyötyä. Järjestelmäkohtainen spagettikoodi voi toimia aivan yhtä hyvin, mutta pitkällä tähtäimellä jaetut komponentit ja käytännöt maksavat itsensä takaisin.


Written by Jani Tarvainen on Thursday August 6, 2015
Permalink -

« Opiskele Symfonyn käyttöä vaiheittain - JavaScriptistä tulee yritys-IT:n, järjestelmäintegraatioiden ja teollisuuden arkea »