Object Georiënteerd Programmeren (OOP)


Iedereen met een beetje PHP ervaring is ongetwijfeld bekend met de term OOP.
OOP staat voor Object Oriented Programming (Object Georiënteerd Programmeren).
Dit houdt in dat je alles programmeert in klasse en objecten.
Dit is in veel programmeertalen verplicht, in php niet.

Klasse en objecten
Een klasse bestaat uit methodes en eigenschappen en het is de bouwtekening waarmee je een object kan maken. Je kan een klasse vergelijken met een mal die gebruikt wordt om plastic bekertjes te maken. De mal stelt de klasse voor en de bekertjes de objecten. In principe maak je dus doormiddel van de mal (klasse) allemaal bekertjes (objecten).
Misschien dat een voorbeeld het wat duidelijk maakt:

Laten we het bekende auto voorbeeld nemen, een beetje afgezaagd maar wel heel makkelijk om te begrijpen.

class auto
{}

Zo, dit is dus een klasse. Nu gaan we deze auto wat eigenschappen geven.

class auto
{
var $kleur;
var $aantalDeuren;
}

We kunnen de auto nu een methode geven.

function startMotor()
{
If ($this->motor == “uit”){
   start motor
} Else {
   echo “De motor draait al!”
}

De auto heeft nu dus een methode (functie). Laten we een auto (object) aanmaken.

$bmw = new auto();

Dit is dus een object gemaakt van de klasse auto(). Als je nu de auto wilt starten doe je dat op de volgende manier:

$bmw->startMotor();

Op deze manier spreek je een functie aan binnen een object.
Dit is niet altijd mogelijk er bestaat een manier om je functies en variabelen
die in een klasse staan te beschermen.

Access modifiers
Dit doe je doormiddel van “access modifiers”. Deze zeggen iets over de mate van
toegang tot functies en variabelen. Er bestaan 3 access modifiers:

  • Public
  • Private
  • Protected
    • Ik zal ze allemaal even kort bespreken:

      Public
      Dit houdt in dat de functie of variabelen aangeroepen kan worden van buiten de klasse.

      Private
      Dit houdt in dat de functie of variabelen allen beschikbaar is voor de eigen klasse en “child” klasse.

      Protected
      Dit houdt in dat de variabelen of functie in de klasse kan worden aangeroepen en
      dus niet overgeërfd wordt naar een “child” klasse.

      Constructor
      Een klasse moet vaak met een bepaalde waarden geïnitialiseerd worden.
      De constructor zorgt hiervoor. Je moet de constructor zien als een functie die automatisch
      wordt uitgevoerd op het moment dat er een object aangemaakt wordt. Simpel voorbeeld:

      class auto
      {

      function __construct($waarde){

         If ($waarde == “1”){
           Start motor;
      }
      }

      Op het moment dat je nu een object aanmaakt hoef je niet meer “handmatig” de motor te starten, dat gebeurd nu vanzelf omdat het in de constructor staat. Indien je de juiste parameters meegeeft. Als volgt dus:

      $ford = new auto(“1”);

      De constructor moest in PHP 4 < altijd de zelfde naam hebben als de klasse. In php 5>
      hoeft dit niet meer, je kan de constructor ook “__construct” noemen

      Destructor
      De destructor wordt automatisch uitgevoerd op het moment dat het object wordt vernietigd. Dit gebeurd aan het eind van de pagina of als Unset() wordt gebruikt.

      Heb gebruik van een constructor en destructor is niet verplicht.

      Klasse variabelen
      Een klasse variabelen is een variabelen die door de hele klasse (en daar buiten) aangeroepen kan worden. Dit in tegenstelling tot een variabelen die je in een functie declareert. Ik zal een voorbeeld geven:

      class Spreker {
         var $text = “klasse var”;
         function spreek(){
            $text = “var in een functie”;
            echo $this->text;
      }
      }

      Je ziet dat ik boven aan in de klasse “var $verbind” neer zet. Dit is dus een klasse variabelen. Als je zoÕn klasse variabelen binnen een functie wilt aanroepen zet je er $this-> voor. Dit wilt zeggen dat de tekst Òklasse varÓ nu verschijnen omdat ik hierboven de klasse variabelen aanroep.

      Voorbeeld
      Ik zal een klein en simpel voorbeeld geven over hoe je OOP kan toepassen zelfs voor de kleinste dingen.

      Je hebt een formulier waarvan de ingevoerde waarden opgeslagen moeten worden in de database. Dit doe je op de volgende manier:

      <?php
      class InvoerVerwerker {

         var $verbind;

         function __construct(){
            if (isset($_POST[‘submit’])) {
               //als het formulier gesubmit is
               $this->verbinden();
               $this->invoerOpslaan();
               $this->toonForm();
            Else
               //als het formulier niet gesubmit is
               $this->toonForm();
            }
         }

         function verbinden(){
            //hier verbind je met de db
            $this->verbind = mysql_connect(“localhost”, “root”, “whatever”);

         }

         function toonForm(){
            //hier zet je de html code in
            echo “
         <form action=”post”>
         <input type=”text” name=”test”><br />
         <input type=”submit” name=”submit”>
         </form>
         “;
         }

         Function invoerOpslaan(){
            $test = $_POST[“test”];
      mysql_query(“INSERT INTO tabel (kolom) VALUES (‘$test’)”);
         }

         function __destruct(){
            mysql_close($this->verbind);
         }
      }

      $formulier = new InvoerVerwerker();
      ?>

      Outro
      Er is nog veel meer informatie te vinden over object georiënteerd programmeren.
      Ik heb hier alleen de “basics” en veel gebruikte dingen uitgelegd.
      Ik raad iedereen aan die een beetje thuis is in php dit vooral OO te doen.
      Het maakt je project stukken overzichtelijker en herbruikbaar.
      Tevens zal je door oop in php ook sneller java of andere programmeertalen onder de knie krijgen.

      Auteur: Glenn Bieger
      Bronnen: Wikipedia, php.net,de wijsheid van mijn docenten.

      Ik geloof je heus wel!

      Je zit echt niet te wachten op weer een saaie nieuwsbrief...
      Met allerlei oninteressante informatie.
      Maar echt, als je mijn mails probeert, dan beloof ik je te helpen met de zoektocht naar jouw perfecte niche! Zodat jij een website kunt maken rond jouw favoriete onderwerp of idee!
      En je krijgt meteen toegang tot mijn gratis downloads. Proberen? Meld je hieronder aan!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *