Codeigniter

logo van Wijhe Consultancy

14-12-2017
Eigen artikelen

afbeelding Codeigniter

Een inleiding tot Codeigniter

Wat is Codeigniter?

 

Het korste antwoord is: een "application framework".

 

Oftewel een raamwerk waarbinnen je een website kunt bouwen.

 

Een langer antwoord is:

 

Codeigniter is een framework.

Een framework is een software omgeving waar binnen je je applicatie bouwt,
en voor een basisstructuur zorgt en je vele standaard programmeer handelingen op een gestructureerde wijze aan reikt.

 

Binnen het framework bouw je dus je applicatie

 

Is een framework al een kant en klaar CMS?

Nee, het levert alleen de bouw stenen waarmee je op een snellere, geordende wijze de website bouwt.

Hierdoor worden diverse veel voorkomende taken binnen een website sterk vereenvoudigt.

 

Wat binnen dit framework een sterk punt is, is de mogelijkheid om

  • lay-out (hoe ziet het er uit)
  • logica (wat dient de website te gaan doen)
  • database verkeer (de interactie met alle ingevoerde gegevens)

gescheiden te houden.

 

In programmeer termen:

  • Model (database verkeer)
  • View (lay-out)
  • Controller (logica)

 

MVC is de afkorting hiervoor.

 

MVC

 

Hoewel de afkorting net zo goed CMV had kunnen heten.

In deze volgorde gebruik je veelal dit soort frameworks

 

Je hebt eerst de controller.

Deze zit als een spin in het centrum van het web en stuurt de rest aan. ( Controller )

 

Om vervolgens de database te bevragen. ( Model )

 

Waarna alle informatie wordt doorgegeven aan een of meerder lay-out scripts ( View )

 

De voordelen van een dergelijke aanpak zijn:

  • scheiding van logica, vormgeving en database verkeer
  • een aanpassing in een van drie onderdelen hoeft de andere twee niet te hinderen
  • uitgebreide mogelijheden om vaker voorkomende functies te standaariseren

 

Aanvullende informatie over frameworks: Wikipedia

 

Het pakket installeren

 

Laten we gaan beginnen

 

Op volgende adres kun je het pakket downloaden:

https://codeigniter.com/download

 

Pak het pakket uit en kopieer de inhoud in de root van je webserver

 
    Uitpakken in
C:/htdocs/CodeIgniter_3.x.x
 

Start nu je web browser en ga naar:

 
    Browser adres
http://localhost/CodeIgniter_3.x.x
 

In je browser zie je dan:

 

ci codeigniter

 

Out of the box en er gebeurt iets.

Heerlijk, maar goed dit is nog geen website.

 

Wat zie je nu?

 

Laten we eerst eens uitleggen, wat we hier nu eigenlijk zien.

 

Binnen Codeigniter wordt er altijd een controller aangeroepen.
Deze roept vervolgens een functie op, welke wordt uitgevoerd.

 
    een theoretisch voorbeeld
http://localhost/CodeIgniter_3.x.x/index.php/controllers/functie
 

De vraag rijst hier, waar zie je wat?

 

Laten we de default waarden van Codeigniter eens bekijken

 
    Codeigniter
    Basis URL website         controller         functie    
   
   
    http://localhost/CodeIgniter_3.x.x/         index.php/         controller/         functie    
    http://localhost/CodeIgniter_3.x.x/         index.php/         welcome/         index    
 

Omdat we met default waarden werken, is ons geval nu

 
    Codeigniter
    http://localhost/CodeIgniter_3.x.x/         index.php/         welcome/         index    
 

hetzelfde als

 
    Codeigniter
    http://localhost/CodeIgniter_3.x.x/    
 

Een eerste voorbeeld van de URL

 

Je ziet een URL met de volgende opbouw

 
http://localhost/CodeIgniter_3.x.x/nieuwsbrief
 

Wat zegt deze URL nu?
In onderstaande schema is de URL uit elkaar gehaald en in de Codeignoter opbouw geplaatst.

 

    website         controller         functie         parameters    
   
   
    http://localhost/CodeIgniter_3.x.x/         index.php/         controller/         functie         parameters    
    http://localhost/CodeIgniter_3.x.x/         index.php/         nieuwsbrief                    
 

De functie en de parameters zijn niet ingevuld.
Daardoor weet je dat de functie index moet zijn
Als er immers niets is ingevuld, is de functie index.

Moet je altijd een index functie in je controller te hebben?
Nee, alleen als deze nodig is.

 

Een tweede voorbeeld van de URL

 

Je ziet een URL met de volgende opbouw

 
http://localhost/CodeIgniter_3.x.x/nieuwsbrief/inschrijven
 
    website         controller         functie         parameters    
   
   
    http://localhost/CodeIgniter_3.x.x/         index.php/         controller/         functie         parameters    
    http://localhost/CodeIgniter_3.x.x/         index.php/         nieuwsbrief/         inschrijven            
 

De controller en de functie zijn ingevuld.
Daardoor weet je dat de controller nieuwsbrief heet en de functie inschrijven moet zijn
En je weet dat er geen parameters vereist zijn.

 

Is de index.php nodig?

 

Nee, niet perse.
Maar dat is voer voor een ander verhaal.
Dus veelal: Nee.

Het volgende artikel geeft hier verdere informatie over
http://portaal.vanwijhecons.nl/htaccess_voor_codeigniter

 

De controller

 

Laten we beginnen met de controller.

 

Ga maar eens naar:

 
http://localhost/CodeIgniter_3.x.x/index.php/welcome
 

Met als resultaat in de browser

 
codeigniter welcome
 

Je ziet geen verschil tussen.

 
http://localhost/CodeIgniter_3.x.x/
 

en

 
http://localhost/CodeIgniter_3.x.x/index.php/welcome
 

 

Dat klopt ook.
In ons geval is

 
http://localhost/CodeIgniter_3.x.x
 

hetzelfde als

 
http://localhost/CodeIgniter_3.x.x/index.php/welcome
 

Foutmelding

 

De volgende code zou zeker een foutmelding opleveren

 
  begin
http://localhost/CodeIgniter_3.x.x/welcome
 

Als je met je eigen controllers en functies gaat werken, (99,9% kans)
dien je index.php vooralsnog wel te schrijven.

(Over hoe je de index.php achterwege laat, wordt nog een artikel over gepubliceerd.)

 

De controller welcome.php

 

Als er niets wordt ingegeven, weet Codeigniter dat er een standaard controller wordt aangeroepen.

Zoals in bovenstaande afbeelding te lezen valt, is de standaard controller op dit moment:
welcome.php

 

Deze is te vinden op:

 
    pad naar welcome.php  
./application/controllers/Welcome.php
 

Of in een directory structuur gezien

 
    pad naar welcome.php  
 

Het aanpassen van de standaard controller komt later nog aan bod

 

De opbouw van een controller

 

De opbouw van de standaard controller is als volgt:

 

  opbouw van welcome.php  
class Welcome extends CI_Controller 
{

    public function index()
    {
        $this->load->view('welcome_message');
    }
    
}

 

Allereerst wordt de hoofd class ininitaliseerd en verbonden met de standaard controller van Codeigniter.

 

  opbouw van de class welcome  
class Welcome extends CI_Controller 
{ 

} 

 

Let op dat de naam "Welcome" begint met een Hoofdletter.

Dan wordt de function index gedefinieerd.

 

  opbouw van de functie index  
function index()
{
 // acties
}

 

Wat deze doet is de View welcome_message aanroepen.

De opbouw van deze aanroep is typerend voor de OOP stijl welke Codeigniter hanteert

 

De view welcome_message is gelegen in het volgende pad

 
    pad naar welcome.php  
./application/views/welcome_message.php
 

Codeigniter weet waar de views zich bevinden, dus alleen een aanroep voldoet.
Bij het aanroepen van een view is het niet nodig php als extensie te gebruiken.
Het mag wel!

 

We gaan nu eens kijken naar de standaard view

 

De view

 

De view welcome_message.php in een directory structuur gezien

 
    pad naar welcome_message.php
view welcome
 

Structuur

 

Enige uitleg is nu wel op zijn plaats.

 

Bij het ontwikkelen van een applicatie binnen Codeigniter, wil Codeigniter je helpen.

 

Dit vraagt wel om de structuur van Codeigniter te volgen.

 

Dat wil zeggen:

  • plaats de controllers in de controllers map
    • ./application/controllers/
  • plaats de models in de models map
    • ./application/models/
  • plaats de views in de views map
    • ./application/views/

 

Een eerste aanpassing

 

Een kleine aanpassing in welcome_message.php

 

Ik ga deze vertalen in het Nederlands.

 

Van

 

  welcome_message.php  

Welcome to CodeIgniter!

The page you are looking at is being generated dynamically by CodeIgniter.

If you would like to edit this page you'll find it located at:

application/views/welcome_message.php

The corresponding controller for this page is found at:

application/controllers/welcome.php

If you are exploring CodeIgniter for the very first time, you should start by reading the User Guide.

Naar

 

  welcome_message.php  

Welkom bij CodeIgniter!

Welkom bij CodeIgniter! - door van Wijhe Consultancy

Als je deze pagina wilt aanpassen, ga dan naar:

system/application/views/welcome_message.php

De bijbehorende controller kun je vinden op:

system/application/controllers/Welcome.php

 

En in de browser:

 
    welcome_message.php
view welcome aangepast
 

Dat werkt dus

 

Bewaar de view welcome_message.php als welkom.php in dezelfde map.

Deze gaan we nu later nog gebruiken.

 

Nu de aanpassing aan de controller welcome.php

 

Welcome.php naar welkom.php

 

Laten we eerst de controller hernoemen naar welkom.php

 

Van:

 
  welcome.php
C:/htdocs/CodeIgniter_3.x.x/application/controllers/Welcome.php
 

naar:

 
  welkom.php
C:/htdocs/CodeIgniter_3.x.x/application/controllers/Welkom.php
 

Er dient wel een aanpassing aan welkom.php te geschieden:

 

Binnen Codeigniter dien je bij een controller de Class naam te geven waarbij de naam met een hoofdletter begint.

 

Dus van welcome.php

 

  welcome.php  
class Welcome extends CI_Controller 
{

 public function index()
 {
  $this->load->view('welcome_message');
 }
 
} 

 

Naar

 

  welkom.php  
class Welkom extends CI_Controller 
{

 public function index()
 {
  $this->load->view('welkom');
 }
 
} 

 

In de browser ga je naar:

 
  welkom.php
http://localhost/CodeIgniter_3.x.x/index.php/Welkom
 

Je ziet dan:

 
    welkom
 

Dat werkt dus.

 

Als je al een fout maakt, vb. welkom2 ipv welkom ingeeft, zie je:

 
    welkom2
niet gevonden
 

 

We gaan een eigen "Hallo wereld" script maken

 

De controller hallo_wereld.php maken we het eerst.

 
    hallo_wereld.php
C:/htdocs/CodeIgniter_3.x.x/application/controllers/Hallo_wereld.php
 
  hallo_wereld.php  
class Hallo_wereld extends CI_Controller 
{

 public function index()
 {
  $this->load->view('hallo_wereld');
 }
 
} 

 

De nieuwe view hallo_wereld.php

 

De view hallo_wereld.php maken we nu.

 
    pad naar hallo_wereld.php
C:/htdocs/CodeIgniter_3.x.x/application/views/hallo_wereld.php
 

Met als inhoud:

 

  hallo_wereld.php  
<html>
<head>
<title>Hallo Wereld</title>

<style type="text/css">
body {
 background-color: #fff;
 margin: 40px;
 font-family: Lucida Grande, Verdana, Sans-serif;
 font-size: 14px;
 color: #4F5155;
}
p {
 background-color: #fff;
 margin: 40px;
 font-family: Lucida Grande, Verdana, Sans-serif;
 font-size: 14px;
 color: #4F5155;
}
h1 {
 color: #444;
 background-color: transparent;
 border-bottom: 1px solid #D0D0D0;
 font-size: 16px;
 font-weight: bold;
 margin: 24px 0 2px 0;
 padding: 5px 0 6px 0;
}
</style>
</head>
<body>

Hallo Wereld!

Het eerste eigen geschreven Codeigniter script

</body>
</html>

 

En in de browser

 
    hallo_wereld URL
http://localhost/CodeIgniter_2.1.3/index.php/hallo_wereld
 

hallo wereld

 
    hallo_wereld URL
 

De eerste eigen functie

 

We gaan de controller hallo_wereld.php uitbreiden met een eigen geschreven functie.
Genaamd wereld

 
    pad naar hallo_wereld.php
C:/htdocs/CodeIgniter_3.x.x/application/controllers/Hallo_wereld.php
 

 

  de functie wereld binnen de class Hallo_wereld  
class Hallo_wereld extends CI_Controller 
{

 /*
  index
 */
 public function index()
 {
  $this->load->view('hallo_wereld');
 }
 //-----/index
 
 
 /*
  wereld
 */
 function wereld()
 {
  $this->load->view('wereld');
 }       
 //-----/wereld 
 
}

 

Wat de functie   wereld() betreft, deze laat de view wereld.php zien

 

De view wereld.php

 

We gaan de view wereld.php schrijven

 
    pad naar wereld.php
C:/htdocs/CodeIgniter_3.x.x/application/views/wereld.php
 

Met als inhoud:

 

  wereld.php  
<html>
<head>
<title>Wereld</title>

<style type="text/css">
body {
 background-color: #fff;
 margin: 40px;
 font-family: Lucida Grande, Verdana, Sans-serif;
 font-size: 14px;
 color: #4F5155;
}

p {
 background-color: #fff;
 margin: 40px;
 font-family: Lucida Grande, Verdana, Sans-serif;
 font-size: 14px;
 color: #4F5155;
}


h1 {
 color: #444;
 background-color: transparent;
 border-bottom: 1px solid #D0D0D0;
 font-size: 16px;
 font-weight: bold;
 margin: 24px 0 2px 0;
 padding: 5px 0 6px 0;
}
</style>
</head>
<body>

Wereld!

Alweer een eigen geschreven script

</body>
</html>

 

En in de browser

 
    wereld
wereld
 

 

En waar gaat dit alles heen?

 

Uiteindelijk is er een adressen web applicatie gebouwd waarin alle acties welke bij een database horen, aan de orde komen.

  • het weergeven van alle records (in onds geval adressen)
  • het toevoegen van een adres
  • het wijzigen van een adres
  • het verwijderen van een adres
  • het zoeken van een adres

 

Deze applicatie is te vinden op http://codeigniter.vanwijhecons.nl/download

 

Tot zover

 

Tot zover de inleiding tot Codeigniter

Het volgende artikel van Codeigniter zal gaan over het instellen van Codeigniter,
en het contact maken met de database MySQL.

 

Veel programmeer plezier ermee.

 

Tot ziens,

 

Ubel Jan van Wijhe

 

van Wijhe Consultancy

info@vanwijhecons.nl