Cursussen/Courses Codesnippets     Top 
PHP - Klassen en objecten


1. Begrippen
Klasse:
Een klasse is een blauwdruk van de opbouw van een object.
De klasse wordt aangemaakt met het kernwoord 'class'.
De klasse bevat eigenschappen (variabelen) en methodes (functies).
De constructor methode bevat programma code om de eigenschappen een waarde te geven.
De andere methodes bevatten programma code om specifieke bewerkingen uit te voeren.
Object:
Een object is een instantie van een klasse (het behoort tot een klasse).
Er kunnen meerdere objecten voorkomen van dezelfde klasse.
Een object wordt aangemaakt met het kernwoord 'new'.
Klasse definitie:
Om een klasse te beschrijven kies je een geschikte naam voor de klasse (bv. persoon, database, category, ...).
Je kiest ook namen voor de eigenschappen (bv. naam, voornaam, geslacht, get_naam, set_naam, haal_records, ...). Bij een klasse die overeenkomt met een tabel in een database maak je best de namen van de eigenschappen dezelfde als de veldnamen in de tabel.
Voor de methodes kies je ook geschikte namen en voorzie je ook de functie argumenten van de methode(bv. toon_eigenschappen(), set_naam($nm), zoek_record($id), ...).
De constructor methode heeft als vaste naam '__construct()' (2 maal liggend streepje en het kernwoord construct). Je duidt de bereikbaarheid van de eigenschappen (de scope) aan met 1 van de kernwoorden public, private of protected.
<?php
// persoon.php
// persoon klasse (abstracte klasse, basis klasse)

class persoon {
	// eigenschappen (voor een basisklasse scope = protected)
	protected $naam;
	protected $voornaam;
	protected $geslacht;
	protected $telefoon;
	
	// methodes
	public function __construct($nm = "", $vm = "", $gl = "", $tel = "") {
		// constructor met standaard lege eigenschappen (= "")
		$this->naam = $nm;
		$this->voornaam = $vm;
		$this->geslacht = $gl;
		$this->telefoon = $tel;
	}
	public function toon_eigenschappen() {
		$meld = "Naam: " . $this->naam . "<br>";
		$meld .= "Voornaam: " . $this->voornaam . "<br>";
		$meld .= "Geslacht: " . $this->geslacht . "<br>";
		$meld .= "Telefoon: " . $this->telefoon . "<br>";
		echo $meld . "<br>";
	}
}


2. Constructor
Een constructor is een methode van de klasse die wordt uitgevoerd als een object van die klasse wordt aangemaakt. In de constructor methode krijgen de eigenschappen van het object een (standaard)waarde.
De scope van deze methode is steeds public.
Met de volgende code wordt de constructor uitgevoerd:
require "persoon.php";
$pers1 = new persoon("Jan","Janssens","M","0123456789");
public function __construct($nm = "", $vm = "", $gl = "", $tel = "") {
	// constructor met standaard lege eigenschappen (= "")
	$this->naam = $nm;
	$this->voornaam = $vm;
	$this->geslacht = $gl;
	$this->telefoon = $tel;
}


3. Methodes
De eigenschappen van een klasse zijn standaard “private” waardoor je de waarde van die eigenschappen niet van buiten de klasse kan wijzigen.
De constructor initialiseert de eigenschappen.
Als je toch de waarde van de eigenschappen wil wijzigen (of opvragen) moet je een get- of een set-functie schrijven.
Een voorbeeld:
require "leerling.php";
$lln1 = new leerling("Ria","Peeters","V","13246546" ,"5AIT","PeetersR");
echo $lln1->get_gebruikersnaam() ."

";
In het 'codesnippets' gedeelte van deze website kan je nog andere voorbeelden vinden van klassen zoals bv. een database klasse, een tabel klasse, enz...
<?php
class leerling {
   ...
public function get_gebruikersnaam() {
	return $this->gebruikersnaam;
}
   ...
}


4. Overerving
Overerving of 'inheritance' is een manier om van een bestaande klasse een nieuwe klasse te maken met dezelfde eigenschappen en methodes als de bestaande klasse. Daarnaast kan de nieuwe klasse ook nog eigen eigenschappen en methodes hebben.
Deze werkwijze bevordert het hergebruiken van bestaande programmacode.
Bij het analyseren kan je in enkele basisklassen overeenkomsten vinden die leiden tot het aanmaken van een basisklasse (= generalisatie).
Van een basisklasse kan je verschillende soorten afgeleide klassen maken (=specialisatie).
Een afgeleide klasse duidt je aan met het kernwoord 'extends' en daarachter de naam van de basisklasse.
In de constructor van de afgeleide klasse kan je de constructor van de basisklasse laten uitvoeren met de aanroep 'parent::__construct( argumenten ).
Het aanmaken van een object van de afgeleide klasse gebeurt dan als volgt:
require "persoon.php";	// basisklasse definitie nodig
require "leerling.php";
echo "Een object van de klasse leerling:" . "
"; $lln1 = new leerling("Ria","Peeters","V","13246546" ,"5AIT","PeetersR"); $lln1->toon_eigenschappen(); echo $lln1->get_gebruikersnaam() ."

";
<?php
// leerling.php
// leerling klasse (erft de eigenschappen van persoon)

class leerling extends persoon {
	// eigenschappen (scope = private)
	private $klas;
	private $gebruikersnaam;
	
	// methodes
	public function __construct($nm = "", $vm = "", $gl = "", $tel = "", $kl = "", $geb = "") {
		// persoon eigenschappen initialiseren
		parent::__construct($nm, $vm, $gl, $tel);
		$this->klas = $kl;
		$this->gebruikersnaam = $geb;
	}
	public function toon_eigenschappen() {
		$meld = "Naam: " . $this->naam . "<br>";
		$meld .= "Voornaam: " . $this->voornaam . "<br>";
		$meld .= "Geslacht: " . $this->geslacht . "<br>";
		$meld .= "Telefoon: " . $this->telefoon . "<br>";
		$meld .= "Klas: " . $this->klas . "<br>";
		$meld .= "Gebruikersnaam: " . $this->gebruikersnaam . "<br>";
		echo $meld . "<br>";
	}
	public function get_gebruikersnaam() {
		return $this->gebruikersnaam;
	}
	
}