codeigniter

Het CodeIgniter framework

CodeIgniter is een open source applicatie-framework voor webtoepassingen. Het is gericht op ontwikkelaars die snelheid verkiezen boven uitgebreide functionaliteit. Volgens de officiële projectpagina is het belangrijkste ontwerpdoel van dit PHP-framework een maximum aan prestaties en flexibiliteit in het kleinst mogelijke kader te plaatsen.


Wat is CodeIgniter?

CodeIgniter is een PHP-gebaseerd web-framework dat beschikt over een compact softwareontwerp waarmee je snel en efficiënt webapplicaties kunt ontwikkelen. CodeIgniter werd opgericht door het Amerikaanse softwarebedrijf EllisLab, dat in februari 2006 de eerste openbare versie uitbracht. Op 9 juli 2013 kondigde EllisLab aan dat het niet langer in staat was om de benodigde middelen voor de verdere ontwikkeling van de software op eigen kracht in te zamelen. Een jaar later werd het project overgenomen door het British Columbia Institute of Technology (BCIT).

De broncode van het framework valt onder de MIT-licentie en is verkrijgbaar via de online service GitHub. De laatste stabiele versie van CodeIgniter 3.1.2 is sinds oktober 2016 gratis te downloaden op de officiële projectpagina.


Structuur van het framework

Het prestatiegerichte ontwerp van de CodeIgniter wordt weerspiegeld in de slanke structuur van het PHP-framework. Dit is gebaseerd op de softwarearchitectuur Model View Controller (MVC). Het basisprincipe achter MVC is de strikte scheiding van programmacode en presentatie. Dit wordt gerealiseerd door een modulaire softwarestructuur en de uitbesteding van PHP-code. Er zijn drie centrale componenten: het datamodel (model), de presentatie (view) en de controller.

  • Het datamodel (model) vertegenwoordigt de datastructuur van een webapplicatie die is ontwikkeld op basis van CodeIgniter. Hiervoor worden modelklassen gedefinieerd in de broncode. Dit zijn speciale functies waarmee informatie kan worden opgehaald, opgeslagen of bijgewerkt in een database.
  • De presentatie (view) is het deel van een applicatie dat aan de eindgebruiker wordt gepresenteerd. Dit is meestal een HTML-document, waarin inhoud dynamisch via PHP wordt geïntegreerd. Een view is dus een soort sjabloon. CodeIgniter biedt ook de mogelijkheid om webpagina's zoals headers en footers of RSS-pagina's als view te definiëren. Webtoepassingen gebruiken meestal meerdere views die hun inhoud uit hetzelfde gegevensmodel halen. Hierdoor kunnen verschillende programmafuncties in verschillende views worden gepresenteerd.
  • De besturing (controller) is de bemiddelende instantie tussen model, beeld en elke andere bron die nodig is om een HTTP-verzoek te verwerken of dynamisch een webpagina te maken. Dit onderdeel accepteert inkomende aanvragen, valideert de invoer, zoekt naar de gewenste view en geeft de inhoud door die het Model uit een database heeft geladen.

De MVC-structuur maakt een flexibel softwareontwerp mogelijk, waarbij afzonderlijke programmamodules met minimale inspanning kunnen worden vervangen, herzien en hergebruikt. Wijzigingen aan een component hebben doorgaans geen effect op de broncode van andere componenten (mits er geen wijzigingen in de interfaces worden aangebracht).

De strikte scheiding tussen programmalogica en presentatie zorgt voor een duidelijke, goed gestructureerde programmacode. Webtoepassingen op basis van MVC worden beschouwd als onderhoudsvriendelijk. Wanneer er een fout optreedt, hoef je meestal maar in één van de componenten naar de oorzaak te zoeken.

Bovendien biedt het MVC-architectuurpatroon de mogelijkheid om logica en lay-out van een webapplicatie afzonderlijk te ontwikkelen. Als backend en frontend-ontwikkelaars parallel werken, kunnen applicaties veel sneller worden voltooid.

CodeIgniter gebruikt MVC, maar bindt gebruikers niet volledig aan dit architectonische patroon. Terwijl Controller en View verplichte componenten zijn, zijn interfaces naar databanken via Model optioneel. Bovendien kan een toepassing op basis van het CodeIgniter framework ook worden geïmplementeerd met een Hierarchical-MVC-architectuur (HMVC) die het klassieke MVC-patroon uitbreidt met een hiërarchische logica.


De toepassing van het PHP-framework CodeIgniter

CodeIgniter is gebaseerd op een URL-concept. Dit betekent dat de controller als centrale regeleenheid tussen de view en het model wordt aangesproken door een URL in te voeren in de zoekbalk van de webbrowser. Ontwikkelaars creëren hiervoor zogenaamde controllerklassen. Dit zijn PHP-bestanden die verschillende functies bevatten voor het laden van bibliotheken, extensies (plug-ins) of helpers (helper), het verbinden met databases, de integratie van een datamodel of het zoeken naar een specifieke view.

De applicatiestroom van de CodeIgniter is gebaseerd op het volgende URL-basisschema:

example.com/class/function/parameter

Het domein (example.com) wordt gevolgd door een te adresseren controller-klasse en een specifieke controller-functie. De parameters zijn optioneel en worden gebruikt om ID's of variabelen door te geven aan de geselecteerde controller.

In de praktijk zou een CodeIgniter URL er als volgt uit kunnen zien:

example.com/news/article/511

Een dergelijke URL adresseert de controller news op het domein example.com en zorgt ervoor dat deze de functie article uitvoert (bijvoorbeeld om een view met dezelfde naam te laden voor de artikelweergave). Optionele parameters die met de URL aan de controller worden meegegeven, tonen welke inhoud via het datamodel uit de database moet worden opgevraagd - in dit voorbeeld een artikel met ID 511.

In de uitgangsconfiguratie toont CodeIgniter de index.php in elke URL van de applicatie:

example.com/index.php/news/article/511

Dit PHP-bestand bevat informatie over de locatie van de kernbestanden, bibliotheken, extensies of helpersklassen in het framework, evenals de directory waarin de applicatiebestanden zich bevinden. Het bestand index.php wordt dus gebruikt om alle basisbronnen te initialiseren.

Als CodeIgniter op een Apache HTTP-server draait, kun je index.php via mod_rewrite verwijderen uit de URL's van de applicatie om zo 'schone' webadressen aan eindgebruikers en crawlers van zoekmachines te tonen. Ontwikkelaars gebruiken hiervoor deze code in het .htaccess-bestand van de webserver:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

De basisstructuur van het PHP framework is gebaseerd op controllerklassen, modelklassen en view templates.


codeigniter

Controller-klassen

CodeIgniter biedt ontwikkelaars de mogelijkheid om controllers als gebruiker gedefinieerde klassen te programmeren. Voor dit doel creëren webontwikkelaars een apart PHP-bestand voor elke controller in de directory application/controllers. Controllers bevatten de programmalogica van een webapplicatie die met het CodeIgniter framework is ontwikkeld en worden als subklassen van CI_Controller class aangemaakt. In de broncode doen programmeurs dit met behulp van het trefwoord extends.

class News extends CI_Controller {
}

Als subklasse krijgt News van de bovenliggende klasse CI_Controller alle zichtbaarheidseigenschappen van de functies public en protected.

Tip: De trefwoorden public, protected en private worden in PHP gebruikt om de zichtbaarheid van een eigenschap of functie te definiëren. Als een element public wordt verklaard, hebben alle klassen van een software toegang tot het element. Als je deze toegang wilt beperken tot ouderklassen en afgeleide klassen, gebruik je het trefwoord protected. Een element dat als private wordt verklaard, is alleen beschikbaar voor de klasse die het element definieert.

Elke klasse van aangepaste controllers moet ook een constructorfunctie bevatten waarmee je bibliotheken, een datamodel, databanken of helperklassen kunt integreren. Vanaf PHP5 wordt __construct() gebruikt als een gestandaardiseerde constructorfunctie.

<?php
	class News extends CI_Controller {
		public function __construct() {    //definieert de constructor 
		parent::__construct();    //roept de constructor van de bovenliggende klasse op 
		$this->load->helper('url');    //laadt een helperklasse voor het werken met URLs
		$this->load->helper('file');    //laadt een helperklasse voor het werken met bestanden
		$this->load->database();    //laadt een database
		$this->load->model('News_model');  //laadt  odel  „News_model“ 
	}
?>

Het voorbeeld toont de klasse News als subklasse van CI_Controller. De bouwerfunctie __construct () integreert twee helperklassen, een database en het datamodel News_model. De individuele regels van de code worden toegelicht in de broncode.

Let op: alle controllerklassen gedefinieerd in PHP voor CodeIgniter moeten beginnen met een hoofdletter (News in plaats van news). In de URL worden ze echter in kleine letters geschreven.


codeigniter

Controllerfuncties

Als de basisstructuur van de door de gebruiker gedefinieerde controller is gedefinieerd, volgt de eigenlijke programmalogica in de vorm van controllerfuncties waarmee je views of interacties met een geïntegreerd datamodel kunt realiseren.

Om de controller in staat te stellen een view te laden, moet het onderliggende HTML-document als PHP-bestand in de directory application/views staan. Een eenvoudige view voor een artikelweergave luidt bijvoorbeeld als volgt:

<!DOCTYPE html>
<html lang="">
  <head>
	<meta charset="utf-8">
	<title><?php echo $title; ?></title>
 </head>
 <body>
	<h1><?php echo $headline ?></h1>
	<p><?php echo  $content_body ?></p>
 </body>
</html>

Tip: HTML-documenten met PHP-code moeten als PHP-bestanden (. php) worden opgeslagen. Dit is de enige manier om ervoor te zorgen dat de PHP-interpreter van de webserver scripts uitvoert en niet zomaar de PHP-code als tekst weergeeft.

Om een view in de controller te laden, is een door de gebruiker gedefinieerde functie vereist. In het volgende codevoorbeeld wordt de functie arti() gebruikt om de View article.php te laden.

public function article() {
  if (!file_exists(application/views/article.php)) {
	show_404();
  }
  $this->load->view('article');
}

De programmacode luidt als volgt: eerst controleert CodeIgniter of de directory application/views/ een bestand met de naam artil.php bevat. Deze query wordt gerealiseerd door de taalconstructie if en de negatieve (!) conditie file exists().

Als aan de voorwaarde is voldaan en er geen bestand met dezelfde naam in de corresponderende directory staat, geeft if de waarde TRUE en CodeIgniter start de onder if vermelde functie show_404(). In dit geval zou een gebruiker ervan in kennis worden gesteld dat het gevraagde bestand niet bestaat. Als niet aan de voorwaarde is voldaan en !file_exists als FALSE wordt geëvalueerd, voert CodeIgniter de functie $this->load->view (‘article') uit. Deze wordt gebruikt om het corresponderende bestand als view in de applicatie te laden.

Als het bestand in PHP-formaat is, kan het gewenste bestand zonder suffix in de view()-functie worden uitgevoerd. Als er andere formaten nodig zijn, is het betreffende achtervoegsel verplicht.

CodeIgniter wordt meestal gebruikt in dynamische webapplicaties. In plaats van statische HTML-pagina's kunnen gebruikers dynamisch gegenereerde webpagina's afspelen. Dit gebeurt door de view te vullen met gegevens die overeenkomen met de parameters die CodeIgniter via de URL krijgt.

example.com/news/article/511

Voorheen werd de $this->load->load->view('article') functie alleen gebruikt om een view te laden voor de itemweergave. Nu is het belangrijk om de inhoud gekoppeld aan parameter 511 te integreren. We gaan ervan uit dat dit een ID is die door middel van een databasemanagementsysteem gekoppeld is aan een bepaald nieuwsartikel. Om deze uit de database in het programma te laden, moet je bovenstaand voorbeeld zodanig aanvullen dat het in de constructor geïntegreerde gegevensmodel wordt aangesproken.

public function article($id) {
  if (!file_exists(application/views/article.php)) {
	show_404();
  }
  $data = $this->News_model->get_data($id);
  $this->load->view('article', $data);
}

Het geleverde functieargument (hier onder de variabele naam $id) komt overeen met het ID gedeelte van de URL - bijvoorbeeld 511. De nog te schrijven modelfunctie get_data () is nodig om de artikelinhoud van de ID uit de database te halen. De view()-methode roept de article-weergave op en geeft deze gegevens door in de vorm van een associatieve array ($data). Het datamodel News_model verzendt de gelezen gegevens daarom naar de controller News, die deze aan de view doorgeeft.

Het datamodel voert alle handelingen uit die horen bij het opvragen van data.


codeigniter

Modelklassen

CodeIgniter gebruikt datamodellen om functies te leveren die het mogelijk maken bepaalde databasebewerkingen uit te voeren. Net als controllerklassen kun je modelklassen via het PHP-framework naar wens programmeren.

Om een modelklasse te maken, voer je eerst een klassenaam in - in dit geval News_model. Analoog aan de controllerklassen zijn alle gebruikersgedefinieerde modelklassen een subklasse van de ouderklasse CI_Model. Dit dankzij het keyword extends. Modelklassen omvatten ook databases en andere bronnen via de constructorfunctie.

class News_model extends CI_Model {
  public function __construct() {
	parent::__construct();
	$this->load->database(); 
  }
}

De zogeheten modelfuncties volgen deze basisstructuur. In deze functies definiëren ontwikkelaars alle databasebewerkingen die via het betreffende datamodel voor de controller beschikbaar moeten zijn.

Modelfuncties

Modelklassen stellen ontwikkelaars in staat om individuele functies te definiëren voor databasetransacties. In een vorig voorbeeld gebruikten we de gebruikersgedefinieerde functie get_data() in de controllerklasse News om artikelinhoud uit de database in de view te laden. In het model definiëren we nu welke databasebewerkingen achter deze functie verborgen zijn.

class News_model extends CI_Model {
  public function __construct() {
	parent::__construct();
	$this->load->database(); 
  }
public function get_data($id) {
   $this->db->select('content');
   $this->db->from('example_table');
   $this->db->where('id', $id);
  $query = $this->db->get();
  return $query->result();
}

In de modelklasse News_model wordt de hierboven gebruikte get_data ()-functie gedefinieerd als een databasebewerking. Deze vraagt de dataset op die onder de bij select() aangegeven kolom staat, met het ID-nummer ($id) uit de databasetabel. Dit gebeurt via get(). Het resultaat verschijnt als array via de functie result().

Een datamodel biedt meestal een verscheidenheid aan modelfuncties. Ontwikkelaars kunnen gebruikmaken van de Query Builder-klasse, die vooraf gedefinieerde functies bevat voor klassieke databasebewerkingen. Een overzicht vind je in de officiële documentatie van het CodeIgniter-framework.


codeigniter

Routing met CodeIgniter

CodeIgniter gebruikt een URL om aan te geven welke controllerklasse en -functie moet worden geadresseerd. Het framework gebruikt hiervoor de URL-structuur klasse/functie/parameters. Je kunt dit basisschema naar wens aanpassen. CodeIgniter stelt hiervoor het bestand routes.php in de directory application/config/ ter beschikking. Dit bevat een array genaamd $-route, waarmee je als ontwikkelaar je eigen routing-criteria kunt definiëren.

De $-route-array bevat drie standaardwaarden in de uitgangsconfiguratie: de standaard controller, een routeringsregel voor de 404-override-regel en een regel voor het automatisch vervangen van koppeltekens (-) door underscores (_).

$route['default_controller'] = 'home/welcome';
$route['404_override'] = 'home/welcome';
$route['translate_uri_dashes'] = FALSE;

De eerste default-invoer bepaalt de standaardcontroller van de applicatie. CodeIgniter laadt dit bestand wanneer een URL alleen het domein bevat, geen extra routinginformatie. In het huidige voorbeeld definieert de routingregel de controllerklasse home als standaardcontroller. Bezoekers die geen informatie over de doelpagina in de URL verstrekken, worden doorgestuurd naar home en krijgen de view welcome te zien. Meestal is dit een forward naar de startpagina. Als er geen controller is gedefinieerd als standaardinstelling, geeft CodeIgniter een 404-foutpagina weer wanneer de startpagina wordt opgeroepen.

Let op: websites met veel 404-foutpagina's zijn moeilijk te crawlen. Zoekmachines hebben dan moeite om relevante content te vinden. Dit kan – naast de impact op de gebruikerservaring – een negatieve invloed hebben op de positie in de zoekmachine. Daarom proberen webbouwers 404-foutpagina’s zo veel mogelijk te vermijden, door gebruik te maken van domeinomleidingen, bijvoorbeeld met behulp van een rewrite engine. 

De tweede default-invoer in de $route-array definieert een controller die wordt opgeroepen wanneer de aanvankelijk door de URL geadresseerde controller niet in de applicatiebestanden aanwezig is. De routingsregel $route[' 404_override] =' home' overschrijft de 404-foutpagina die gewoonlijk in zo’n situatie verschijnt. In plaats daarvan is een omleiding naar de controllerklasse home actief.

De derde default-invoer in de $route-array voorkomt routingsfouten door koppeltekens. Het koppelteken is geen geldig teken voor klasse- of functienamen en wordt daarom al in de standaardinstelling automatisch vervangen in URL's.

Wil je een aangepaste routing-regel maken voor een dynamische URL? Dan kun je als webontwikkelaar met CodeIgniter twee opties gebruiken: wildcards of ‘gewone’ regels.

Routes.php kent twee soorten wildcards:

Wildcards van routes.php Omschrijving
:num Is een placeholder voor een integer (volledige getal)
:any Is een placeholder voor een string (serie tekens)

Dit voorbeeld toont een regel in routes.php waarmee je de functie (article) verwijdert uit de URL:

$route['news/article/(:num)'] = 'news/$1';

Via de wildcard :num wordt de parameter van een dynamische URL uitgelezen en opgeslagen in de variabele $1. Maak je routingregels met :num of :any, dan moet je die in routes.php tussen haakjes zetten.

In routes.php zijn ook routingregels in de vorm van gewone tekst toegestaan. Je kunt de wildcards daarmee ook als volgt gebruiken:

:num entspricht \d+
:any entspricht [^/]+

Deze schrijfwijze is dus een alternatief voor het bovenstaande voorbeeld:

$route['news/article/(\d+ )'] = 'news/$1';

Ook reguliere uitdrukkingen worden in routes.php tussen haakjes geplaatst.


codeigniter

De applicatieflow in een oogopslag

De flow van een toepassing op basis van CodeIgniter in zeven stappen:

  1. Het bestand index.php is de front-controller van CodeIgniter en vangt dus inkomende HTTP-requests op. Dit initialiseert alle basis-resources die nodig zijn om de applicatie te gebruiken.
  2. CodeIgniter controleert tijdens het routeren welke actie moet worden uitgevoerd. De applicatie vergelijkt de URL in de aanvraag met de routingsregels in routes.php.
  3. Na routing volgt caching - als een request vanuit de cache van de applicatie kan worden beantwoord, stuurt CodeIgniter dit cacheresultaat direct naar de verzoekende webbrowser. Zo niet, voert de controller die tijdens de routing is bepaald zijn taak uit met een voorgeschakelde filterfunctie.
  4. Het CodeIgniter-framework heeft een filter dat schadelijke requests onderschept. Dus voordat de applicatie een controller laadt die aan de aanvraag voldoet, controleert dit filter de veiligheid van het HTTP-verzoek.
  5. Pas nadat de aanvraag door het filter is gegaan, start de controller. Deze kiest een geschikte view en laadt het datamodel inclusief alle bibliotheken, helperklassen, extensies en scripts die nodig zijn om de vraag te beantwoorden.
  6. Zodra de view alle relevante gegevens heeft ontvangen, kan deze naar de webbrowser worden verstuurd.
  7. Is caching ingeschakeld? Dan slaat de CodeIgniter de gegevens tijdelijk op om een identieke request snel en direct te kunnen beantwoorden.

codeigniter

Voordelen van het CodeIgniter-framework

Met meer dan 13.000 sterren is CodeIgniter een veelgeprezen ontwikkelingsproject van GitHub. Het staat op de derde plaats in de lijst van populairste PHP-frameworks. Maar net als elke andere software heeft CodeIgniter voor- en nadelen. We zetten ze graag op een rij, zodat je zelf kunt beslissen of dit slanke PHP-framework voor jou als webontwikkelaar geschikt is.

Voordelen van CodeIgniter

  • Gemakkelijke configuratie: met CodeIgniter kun je snel starten. Gebruikers hoeven niet veel tijd te besteden aan het configureren van het framework, maar kunnen bijna meteen na de installatie met het ontwikkelen van applicaties beginnen. De configuratie blijft grotendeels beperkt tot de config.php-instellingen in de directory application/config/. Je definieert hier een standaardpad voor toegang tot de webbrowser, versleutelings-key, sessiecookie en de cross-site scripting-instellingen (XSS). Het wordt ook aangeraden om een .htaccess-bestand aan te maken, om zo index.php via RewriteRule te verwijderen uit de applicatie-URL. Bovendien moet je een databaseverbinding configureren, die je vervolgens in database.php zet.
  • Neemt weinig plaats in: CodeIgniter is qua bestandsgrootte tamelijk klein. Het downloadpakket van het framework omvat ongeveer 11 MB. Meer dan 9 MB hiervan bestaat uit gedetailleerde documentatie van de software. Het kleine codevolume is te danken aan het feit dat CodeIgniter slechts enkele kleine bibliotheken bevat. Zijn er meer tools nodig? Dan download je die afzonderlijk.
  • Zeer goede prestaties: het slanke basissysteem betekent dat CodeIgniter een hogere snelheid kan halen dan andere PHP-frameworks. De uitvinder van het PHP, Rasmus Lerdorf, merkte dit ook al eens op. Tijdens de Free and Open Source Conference (FrOSCon) in 2008 was hij zeer positief over CodeIgniter omdat het snel en licht is en het minst als beperkend framework geldt.
  • Zuivere URL's: CodeIgniter genereert automatisch mooie, gebruiksvriendelijke en zoekmachinevriendelijke URL's. Het gebruikt geen querystrings om dynamische webcontent te openen, zoals andere PHP-frameworks het doen, maar heeft een segmentgebaseerde aanpak.
  • URL met querystring: example.com?controller=news&function=artikelartikel&id=511
  • Segmentgebaseerde URL: example.com/news/article/511
  • Vrije programmeerstijl: CodeIgniter is gebaseerd op een vrije interpretatie van de MVC-architectuur. Als ontwikkelaar heb je dus niet te maken met een voorgedefinieerde programmeerstijl.
  • Uitgebreide documentatie: CodeIgniter heeft uitgebreide documentatie in het Engels, waaronder een beginnerstraining. De broncode is ook duidelijk gerangschikt en goed becommentarieerd. Je vindt de CodeIgniter-documentatie op de projectwebsite als online handleiding en downloadversie.
  • Community-ondersteuning: als je applicaties met CodeIgniter bouwt, kun je rekenen op de hulp van andere gebruikers. Het project heeft namelijk een actieve community. Er is een openbaar forum beschikbaar op https://forum.codeigniter.com en daar wisselen zo’n 8.000 gebruikers ervaringen uit in vele tienduizenden discussies.

codeigniter

Nadelen van CodeIgniter

De ontwikkeling van het CodeIgniter-framework stagneerde tijdelijk voordat het door het BCIT werd overgenomen. Daarom zoeken ontwikkelaars in CodeIgniter vaak tevergeefs naar technologische ontwikkelingen die bij vergelijkbare frameworks over de afgelopen jaren wel toegevoegd zijn.

  • ORM via externe leveranciers: object-relational mapping is een techniek voor softwareontwikkeling waarmee applicaties objecten die zijn geschreven in een objectgeoriënteerde programmeertaal als PHP, kunnen opslaan in een relationele database. CodeIgniter heeft geen standaardondersteuning van ORM, maar je kunt de mogelijkheid installeren via uitbreidingen van andere leveranciers.
  • Geen template engine: deze ontbreekt volledig in CodeIgniter. In plaats daarvan heeft het framework een eenvoudige, optionele template parser. Dit kán een voordeel zijn, want een template engine heeft meestal gevolgen voor de prestaties (er is extra runtime nodig). Bovendien moet je voor zo’n engine ook de template-taal leren. Aan de andere kant kun je met een template engine de view scheiden van de code, zodat de broncode duidelijk en gestructureerd blijft. Een engine met een slanke syntaxis kan de totale omvang van de code zelfs flink reduceren.
  • Geen namespacing: met namespaces biedt PHP de mogelijkheid om code te scheiden tussen verschillende applicatiegroepen. PHP-ontwikkelaars gebruiken deze functie om conflicten te voorkomen die ontstaan bij het benoemen van klassen en functies. Veel voorkomende problemen zijn naamconflicten van interne PHP-klassen, functies, constanten of elementen van externe leveranciers. CodeIgniter gebruikt deze PHP-functie nog niet.
  • Geen PHP auto loading: al vanaf versie 5 biedt PHP met __autoload() en spl_autoload_register() twee functies waarmee je klassendefinities automatisch kunt laden wanneer dat nodig is. Deze functie is niet beschikbaar in het CodeIgniter-framework.
  • Minder bibliotheken dan andere PHP frameworks: door het slanke softwareontwerp heeft CodeIgniter aanzienlijk minder bibliotheken in de bronconfiguratie dan andere PHP-frameworks. Ze omvatten voornamelijk de belangrijkste taken van webontwikkeling, zoals toegang tot databanken, e-mailverzending, validering van formuliergegevens, het onderhouden van sessies of het werken met XML-RPC. Taken die verder gaan dan de basisfuncties vereisen de integratie van uw eigen bibliotheken of bronnen van derden. Een punt dat ontwikkelaars die op zoek zijn naar een minimaal kader ook kunnen interpreteren als een voordeel.

codeigniter

CodeIgniter in een oogopslag

In deze tabel zie je de belangrijkste gegevens van het CodeIgniter-framework:

CodeIgniter
Ontwikkeld door British Columbia Institute of Technology (BCIT)
Actuele release Versie 3.1.2
Architectuursjabloon MVC/HMVC, Active Record, Chain of Responsibility
Benodigde kennis PHP, objectgeoriënteerde programmering (OOP)
Programmeertaal PHP 5.6 of hoger
Licentie MIT-licentie
Ondersteunde databases MySQL (5.1+), Oracle, PostgreSQL, MS SQL, SQLite, CUBRID, Interbase/Firebird, ODBC
ORM Alleen via externe aanbieders
Caching ja
Template engine nee
Namespaces nee
PHP auto loading nee
Zoekmachinevriendelijke URL's nee
Veiligheidsfeatures Cross-Site-Request-Forgery (XSRF), Cross-Site-Scripting (XSS), SQL-Injection
Testing library PHP Unit

Samenvatting: voor welke projecten is het framework van CodeIgniter geschikt?

Met zijn compacte ontwerp en gebruiksvriendelijke syntaxis is CodeIgniter bijzonder geschikt voor beginnende programmeurs. Ook voor wie al ervaring heeft met dynamische webontwikkeling op basis van PHP is CodeIgniter handig, omdat je dan dit PHP-gebaseerde lichtgewicht-framework zeer snel onder de knie hebt. Voor meer ervaren webontwikkelaars biedt het een snelle, flexibele oplossing, omdat het een PHP-framework is dat alle basisfunctionaliteit biedt.

Wil je CodeIgniter gebruiken? Dan zal je het MVC-architectuurpatroon moeten accepteren en kunnen werken zonder een sjabloonengine en native ORM. Ondanks de minimale codegrootte is CodeIgniter uitstekend bruikbaar voor kleine en grote webprojecten.