Waarom heeft Tringo voor Symfony gekozen?
Symfony

Symfony is een Open Source PHP5 framework voor het ontwikkelen van maatwerk webapplicaties. Dankzij dit professionele, goed geïntegreerde framework kunnen snel dynamische, database gedreven webapplicaties ontwikkeld worden, inclusief moderne web 2.0 technieken, zoals AJAX en RSS.

Wat is eigenlijk een 'framework' ?

Een 'framework' is een hulpmiddel bij het ontwikkelen van nieuwe software of web-applicatie. Door veel gebruikte taken te automatiseren (genereren van code voor toegang tot de database-tabellen), veel handige hulpfuncties te definiëren en een duidelijk structuur van de software code te hanteren (bijvoorbeeld een Model View Control pattern), kan een nieuwe webapplicatie snel ontwikkeld worden. Daarnaast kan het framework verder worden uitgebreid met zogenaamde plugins, geteste functies uit de Open Source gemeenschap. Voorbeelden van deze zogenaamde 'plugins' zijn een inlogsysteem, content management, een FAQ-lijst etc.

Framework versus Content Management Systeem

Wat is eigenlijk het verschil tussen een 'framework' en een 'Content Management System'? Een framework is een hulpmiddel voor het ontwikkelen van een webapplicaties, een Content Management Systeem is al een webapplicatie op zichzelf! Om het duidelijker te maken (of nog lastiger?): moderne Content Management Systemen zoals bijvoorbeeld Joomla 1.5 en Drupal zijn gebaseerd op een eigen framework. Zo'n Content Management framework is specifiek ingericht voor de taken en functies van het Content Management Systeem. Het symfony framework is een generiek framework voor alle soorten webapplicaties. En om het nu nog lastiger te maken: ja, er zijn ook Content Management Systemen gebaseerd op het symfony framework!

Maar wanneer gebruik je nu een framework en wanneer een Content Management Systeem?
Indien de gevraagde functies goed passen binnen een Content Management Systeem (verschillende gebruikers kunnen artikelen plaatsen en wijzigen) en dit biedt voldoende flexibiliteit en mogelijkheden, dan adviseren we een Content Management systeem, eventueel uitgebreid met specifieke modules of plugins.

Indien de gevraagde functies niet echt overeenkomt het typische Content Management taken als het plaatsen van content en/of artikelen, dan is een maatwerk-applicatie gebaseerd op bijvoorbeeld het symfony framework een betere keuze.

Waarom het symfony-framework?

Voor het ontwikkelen van dynamische websites zijn verschillende programmeertalen beschikbaar, onder ander .net, Java en PHP. Binnen de PHP zijn ook weer verschillende frameworks beschikbaar, onder andere CakePHP, Zend en Symfony. Tringo heeft gekozen voor het Symfony framework omdat het een van de meest krachtige en geïntegreerde frameworks is voor PHP5, met een actieve en professionele Open Source community. Symfony integreert de beste tools uit de PHP Open Source wereld (onder andere Propel, YML) en is geïnspireerd door andere frameworks, onder andere Ruby on Rails.

Daarnaast kan het Symfony framework eenvoudig zelf worden uitgebreid, of worden uitgebreid met functies van bijvoorbeeld het Zend Framework.

Wat heb ik als klant aan zo'n framework?

Handig voor de ontwikkelaar, maar wat heb ik als klant nu aan zo'n framework? Hier een opsomming van voordelen:

  • Snel ontwikkelen van een custom-made website
  • Minder fouten door gebruik van geteste code en minder regels (minder onderhoud!)
  • Implementatie van de nieuwste technieken, zoals AJAX en web2.0
  • Database onafhankelijk
  • Door duidelijke structuur is de webapplicatie later gemakkelijk aan te passen, ook door iemand anders

Symfony voor de ontwikkelaar

Ok, leuk al die voordelen, maar wat zit er dan precies onder de motorkap van Symfony? Wat betekent Symfony dan voor de ontwikkelaar? Kort en krachtig:

  • Volledig object georienteerd in PHP5
  • Implementatie van het Model-View-Control voor duidelijke en flexibele structuur
  • Database abstractie door middel van Object-Relational-Mapping (ORM): de database-tabellen zijn als objecten beschikbaar binnen je code. De ORM is gebaseerd op Propel.
  • Code-generatie:
    • aan de hand van het database-model genereert Symfony object-georienteerde code voor de meest gangbare functies.
    • Generatie van Create Read Update Modify(CRUD) interface voor database-tabellen
    • Automatische en configureerbare backend generatie
  • Integratie van bekende javascript bibliotheken voor bijvoorbeeld eenvoudige integratie van AJAX.

Onstaan van symfony

Symfony is ontwikkelt door één persoon: Fabienne Potencier, eigenaar en oprichter van Sensio in Parijs. Hij ontwikkelde Symfony in eerste instantie voor zijn eigen bedrijf om snel applicaties te kunnen maken door veel voorkomende taken te automatiseren: hierdoor ontstaat snel code, met minder regels en dus ook minder fouten. Door het beschikbaar stellen van Symfony aan de Open Source community, draagt de community bij aan het oplossen van bugs en het toevoegen van functionaliteiten door de ontwikkeling van Plugins. Bij de ontwikkeling van het Symfony framework in PHP5 liet hij zich inspireren door andere frameworks, ondere andere Ruby on Rails, en hij integreerde de beste ontwikkeltools binnen Symfony.