PHP development anno 2014 deel 1; frameworks

Inleiding

Voorheen schreef ik over 5 veranderingen van CMS veiligheid in één decennium, daarmee inzicht gevende in hoe Content Management Systemen als Joomla, WordPress en Magento zich over de jaren veranderd hebben. Ieder van deze systemen werkt op hun eigen manier. Als grondslag van deze systemen staat altijd een set basisfunctionaliteiten, zoals het interacteren met de database, het tonen van HTML en het werken met plugins, extensies oftewel uitbreidingen.

Een set basisfunctionaliteiten wordt vaak het framework genoemd, iets waaraan men andere functionaliteiten verder kan ophangen. Tegenwoordig zijn er al veel losstaande frameworks, waaronder CakePHP, Zend framework, Code igniter, Symfony (2) en Yii, die het stuk voor stuk mogelijk maken om een eigen CMS of website mee te bouwen.

In de komende maand schrijf ik over hoe de methodiek in development is veranderd en welke invloed frameworks daarop hebben gehad. Omdat het nogal veel informatie en dus tekst is, deel ik het artikel op in drieëen:

  1. Wat zijn frameworks, waarom zou je ze toepassen en welke invloed heeft deze op development.
  2. PHP versies, vereenvoudigingen in PHP development en het ontwikkeltempo.
  3. Project management, scrum en een integrale aanpak voor webdevelopment.

Waarom een framework gebruiken?

Tegenwoordig worden maatwerk websites niet meer volledig vanaf nul geprogrammeerd. Het scheelt namelijk enorm veel tijd om een framework in te zetten. Bij het gebruik van een eigen-ontwikkeld framework moet iedere nieuwe developer eerst bekend worden met deze manier van developen. Dit in tegenstelling tot een publiekelijk beschikbaar framework (open source), waarbij de kans bestaat dat de nieuwe developer reeds bekend ermee is. En zelfs wanneer dat niet het geval is, heeft hij de beschikking over een grote community om van te leren.

Ook een tijdsvoordeel bieden de ruimschoots beschikbare toevoegingen (ook wel “bundles” genoemd), welke basisfunctionaliteiten zoals gebruiker- en groepenbeheer, maar ook volledige fora met zich meebrengen. Het niet hoeven ontwikkelen van deze functies komt ten goede aan de ontwikkelsnelheid en laat ruimte over om het totaalplaatje te perfectioneren.

Een framework verplicht een developer tot het gebruik van bepaalde standaarden. Zoals standaarden die de veiligheid van de applicatie ten goede komen. Zo was het in PHP versie 5.2 nog gangbaar om voor database verbindingen functies te gebruiken startende met mysql_; deze worden tegenwoordig al gezien als hoogst onveilig en zullen op korte termijn zelfs in zijn geheelheid verdwijnen. Als overgangsperiode zijn er in PHP de mysqli_ functies ontstaan, welke iets veiliger zijn. Uiteindelijk is dé standaard echter om PDO in te zetten.

Moderne, veilige frameworks zetten altijd PDO in bij database transacties.

Een andere standaard is het gebruik van MVC; het splitsen van ontwerpbestanden (view oftewel templates) van de code die voor de dynamiek zorgt (controller) en de database definities (model). In plaats van binnen de HTML telkens de daadwerkelijke PHP code hun dynamische content te laten tonen, kan de PHP via een tussenlaag verwerkt worden. Deze templates geven de mogelijkheid voor PHP om op voorgespecificeerde plekken hun gegevens te tonen. Deze “placeholders” zijn eigenlijk – net als bij PHP – variabelen. Om deze templates eenvoudiger en sneller te tonen wordt er vaak gebruikt gemaakt van een template systeem; waaronder de bekendste Smarty, Twig en Blade. MVC staat voor “Model, View, Controller” waarbij de model de database-laag betreft, de view de daadwerkelijke HTML is – oftewel de template en waar de controller al het dynamische bij elkaar gooit en bepaalt welke view getoond dient te worden.

Als laatste wil ik aanhalen, uit ervaring sprekende, dat het volledig zelf ontwikkelen van een framework enorm veel tijd kost, terwijl het resultaat iets is wat waarschijnlijk in gelijke vorm reeds bestaat. Vindt daarom het wiel niet opnieuw uit en gebruik simpelweg het framework waar je je het beste bij voelt.

Kortom de voordelen voor het gebruik van een framework:

  1. Tijd, veel meer tijd om te focussen op het ontwikkelen van dé applicatie.
  2. Standaarden worden geforceerd, een veiligere applicatie die gebruikt maakt van fatsoenlijk afgesplitste code via MVC.
  3. Niet het wiel opnieuw uitvinden.