Waarom 'var's aanmaken in een class?
Ik las net een tutorial over OOP met een voorbeeld van een Mens opgebouwd uit classes en functions, maar ik vind dit deel erg verwarrend:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
var $leeftijd;
var $huidskleur;
var $lengte; // in centimeters
var $gewicht; // in grammen
var $laatsteKeerGegeten;
var $meterGelopen;
var $huidskleur;
var $lengte; // in centimeters
var $gewicht; // in grammen
var $laatsteKeerGegeten;
var $meterGelopen;
Waarom is dit gedaan? Heeft dit voordelen? Er worden geen waardes en dergelijke aan gegeven, dus het lijkt mij vrij nutteloos!
Nu is het een erg goede tutorial (mijn mening als nieuwe PHPer) dus ik vroeg me af waarom ik dit zou doen als ik zelf aan de slag ga :)
Bedankt voor de hulp!
Gewijzigd op 01/01/1970 01:00:00 door Thomas
maar public private of protected
Als je aan foutafhandeling doet, en al je scripts netjes met error_reporting(E_ALL) start, zul je dan ook foutmeldingen krijgen als "undefined index..." als je niet gedefinieerde variabelen gebruikt.
En nog een bijkomend voordeel: als je een IDE gebruikt die code aanvult, zie je ook meteen welke variabelen van een classe je kunt gebruiken...
rvw schreef op 10.11.2008 16:12:
gebruik zo ie zosowieso geen var
maar public private of protected
maar public private of protected
Inderdaad, want dat betekend dat je php4 gebruikt, en dus dat je nogal een kreupele vorm van OOP gebruikt.
Gebruik php5's OOP, en zie ook Visibility.
Ik ga nog wat lezen voordat ik verder ga, dank jullie wel!
Maar defineren is gewoon een good practice en houd dingen overzichtelijk.
Waarom variabelen in een class?
Heel simpel zodat je ze binnen de class kan herbruiken.
Dat is ook de toegevoegde waarde van een class boven losse functies.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Lode{
protected $_message = null;
public function __construct($message){
//validatie zou wellicht geen kwaad kunnen...
$this->_message = $message;
}
public function getMessage(){
return $this->_message;
}
public function __toString(){
return 'message: '.$this->_message.'<br />'.PHP_EOL;
}
}
//
$lode = new Lode('hallo');
echo $lode->getMessage().'<br />'.PHP_EOL;
echo $lode; //__toString magic method
?>
class Lode{
protected $_message = null;
public function __construct($message){
//validatie zou wellicht geen kwaad kunnen...
$this->_message = $message;
}
public function getMessage(){
return $this->_message;
}
public function __toString(){
return 'message: '.$this->_message.'<br />'.PHP_EOL;
}
}
//
$lode = new Lode('hallo');
echo $lode->getMessage().'<br />'.PHP_EOL;
echo $lode; //__toString magic method
?>
In de methods kan je natuurlijk allerlei generieke handelingen verrichten...
Gewijzigd op 01/01/1970 01:00:00 door Lode
Het herbruiken van variabelen binnen een class kan overigens ook zonder ze eerst te definieeren binnen de classe, in principe is dit niet anders:
dan
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt