Hallo PHPers!

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:


    var $leeftijd;
    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!
gebruik zo ie zo geen var
maar public private of protected
@Torn: als je strict programmeert hoor je variabelen eigenlijk te definieeren voor je ze gebruikt. PHP biedt wel de mogelijkheid om variabelen te gebruiken die niet gedefnieerd zijn, maar dit maakt je code over het algemeen niet beter (leesbaar).

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

Inderdaad, want dat betekend dat je php4 gebruikt, en dus dat je nogal een kreupele vorm van OOP gebruikt.
Gebruik php5's [php]OOP[/php], en zie ook Visibility.
@Iedereen: Dank voor de tips en snelle reacties! Ik merk nu dat ik echt nog maar een beginner ben en dat ik nog wel even moet inlezen op dit vlak. Ik gebruik wel PHP 5(.2.6) en daar wil ik ook wel naar programmeren dan.

Ik ga nog wat lezen voordat ik verder ga, dank jullie wel!
Als je vars niet defineerd zijn ze standaard null volgens mij.
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.

<?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
?>

In de methods kan je natuurlijk allerlei generieke handelingen verrichten...
@Lode: een niet gedefinieerde variabele is niet null, maar niet gedefinieerd. Wanneer je een variabele definieert met var $var (of protected / private / public $var), dan is hij standaard NULL als je geen waarde toekent.

Het herbruiken van variabelen binnen een class kan overigens ook zonder ze eerst te definieeren binnen de classe, in principe is dit niet anders:

<?php
class classname {
function __construct()
{
$this->var = '';
}
}
?>

dan

<?php
class classname {
public $var = '';
}
?>

Reageren