JimB schreef:Kan je me dan ook uitleggen hoe het werkt?

ik kan je de basis wel ff een beetje uitleggen, maar ik kan hier moeilijk een hele tut schrijven

ik zal wel een standaard voorbeeld gebruiken, het voorbeeld van een auto!
alles wat met classes enzo te maken heeft heet oop, dat staat voor object orientated programming (oid

) een klasse (class) wordt vaak gezien als een soort blauwdruk of een object (vandaar de eerste o in oop

)
dit is een klasse:
- Code: Selecteer alles
<?php
class auto
{
}
?>
Een klasse geeft eigenlijk gewoon aan wat een bepaald iets kan. om dit dan toe te passen moet je er een instantie van maken, dat doe je zo:
- Code: Selecteer alles
<?php
$bmw = new auto();
?>
hier heb je dus niets aan natuurlijk! daarom heeft elke klasse z'n eigen variabelen. deze kun je bijvoorbeeld gebruiken om de eigenschappen van de klasse aan te geven. Er bestaan drie soorten variabelen: private, protected en public.
private de variabele kan alleen worden benaderd vanuit de klasse zelf
protected de variabele kan alleen worden benaderd vanuit de klasse zelf en vanuit klassen die een aanvulling zijn op de klasse
public de variabele kan 'overal' vandaan worden benaderd.
als je php versie LAGER dan 5 is, moet je altijd var gebruiken!dit is een standaard variabele:
- Code: Selecteer alles
<?php
[type] $[naam]; //nog geen waarde
[type] $[naam] = [waarde]; //wel al een waarde
?>
onze klasse ziet er nu dus bijvoorbeeld zo uit:
- Code: Selecteer alles
<?php
class auto
{
public $kleur = "Rood";
public $merk = "BMW";
protected $snelheid = 0;
}
?>
om een variabele vanuit je klasse aan te roepen gebruik je this, bijvoorbeeld:
- Code: Selecteer alles
<?php
$this->kleur;
?>
deze variabeles kun je dan natuurlijk ook via je instantie lezen en schrijven!
- Code: Selecteer alles
<?php
$bmw = new auto();
echo $bmw->kleur; //Rood
$bmw->kleur = "Zilver";
echo $bmw->kleur; //Zilver
echo $bmw->snelheid; //dit geeft een error!
?>
dit is natuurlijk heel erg leuk! maar je kunt er niets mee

gelukkig bestaat er ook nog iets om functionaliteit toe te voegen! dit zijn de methods, dit zijn eigenlijk gewoon functions die deel van een klasse uitmaken.
ook bij de functions kun je weer de private, protected en public gebruiken
- Code: Selecteer alles
<?php
[type] function [naam]([parameters])
{
}
?>
nu kunnen we natuurlijk weer wat toevoegen aan onze klasse!

hier gebruiken we dus ook de this!
- Code: Selecteer alles
<?php
class auto
{
public $kleur = "Rood";
public $merk = "BMW";
protected $snelheid = 0;
public function geefGas()
{
$this->snelheid += 5;
}
public function geefMinderGas()
{
$this->snelheid -= 5;
}
public function geefSnelheid()
{
return $this->snelheid;
}
}
?>
dit kun je zo gebruiken:
- Code: Selecteer alles
<?php
$bmw = new auto();
echo $bmw->kleur; //Rood
$bmw->kleur = "Zilver";
echo $bmw->kleur; //Zilver
$bmw->geefGas();
$bmw->geefGas();
echo $bmw->geefSnelheid(); //10
$bmw->geefMinderGas();
echo $bmw->geefSnelheid(); //5
?>
er zijn ook een aantal speciale methods. Ik zal er eentje behandelen, de rest kun je wel terug vinden op php.net

(over het algemeen) Beginnen alle speciale methods met __ (dubbel laag streepje). De speciale method die ik nu ga behandelen, is de constructmethod. Hier eerst een voorbeeldcode:
- Code: Selecteer alles
<?php
class auto
{
public $kleur = "Rood";
public $merk = "BMW";
protected $snelheid = 0;
public __construct($kleur, $merk)
{
$this->kleur = $kleur;
$this->merk = $merk;
}
public function geefGas()
{
$this->snelheid += 5;
}
public function geefMinderGas()
{
$this->snelheid -= 5;
}
public function geefSnelheid()
{
return $this->snelheid;
}
}
?>
en natuurlijk kun je ook dit gebruiken, maar het leuke is dat je voor de __construct geen apparte method hoeft aan te roepen, deze wordt namelijk automatisch aangeroepen bij het maken van de instantie
- Code: Selecteer alles
<?php
$bmw = new auto('Zilver', 'BMW');
$bmw->geefGas();
$bmw->geefGas();
echo $bmw->geefSnelheid(); //10
$bmw->geefMinderGas();
echo $bmw->geefSnelheid(); //5
?>
klaar!dit is zo'n beetje de basis! ik raad je wel sterk aan om nog een echte tutorial door te gaan!
ps: schrijffouten kunnen er in zitten, heb het gewoon achter een stuk door geschreven
