PHP expert |
|
Ik was eens aan het denken.
Over mogelijkheden met PHP.
Toen kwam ik bij OOP:).
Nu, ik vroeg me af wat het logischte(/beste) is.
- Een class output laten versturen.
- Een class gegevens via methodes terugsturen en deze via het object laten outputten.
Volgens mij is die laatste het logischte.
Ik heb daarom ook een klein voorbeeldje gemaakt waar je het zo kan doen.
De class ('t is maar een dummy klasse) kan 2 argumenten als invoer krijgen. Ik wil de som berekenen van deze 2, maar dan moet ik wel eerste kijken of ze geldig (is_numeric) zijn.
Als dit niet zo is gooi ik een error (ik weet dat ik zoiets beter via throw/try/catch zou moeten doen, maar 't is om een voorbeeld te kunnen geven... even illustreren wat ik bedoel). Ik vang deze error op in een variabel en zet een andere variabele (isError) op true. Dan ga ik via een booleaanse methode de waarde van isError terugsturen zodat de gebruiker via het object kan achterhalen of er een error is of niet.
<?php
class test {
private $getalA; //eerste getal
private $getalB; //tweede getal
private $errorString; //bevat de error string
private $isError = false; //boolean om te controleren of er een error is
function __construct( $getal1 = 0, $getal2 = 0 ) {
$this->getalA = $getal1;
$this->getalB = $getal2;
if( !is_numeric( $this->getalA ) || !is_numeric( $this->getalB ) ) {
$this->gooiError( "De waardes moeten numeriek zijn!" );
}
}
public function som() {
return $this->getalA + $this->getalB;
}
private function gooiError( $errorStr ) {
$this->errorString = $errorStr;
$this->isError = true;
}
public function getError() {
return $this->errorString;
}
public function isSetError() {
return $this->isError;
}
}
?>
<?php class test { private $getalA; //eerste getal private $getalB; //tweede getal private $errorString; //bevat de error string private $isError = false; //boolean om te controleren of er een error is function __construct( $getal1 = 0, $getal2 = 0 ) { $this->getalA = $getal1; $this->getalB = $getal2; $this->gooiError( "De waardes moeten numeriek zijn!" ); } } public function som() { return $this->getalA + $this->getalB; } private function gooiError( $errorStr ) { $this->errorString = $errorStr; $this->isError = true; } public function getError() { return $this->errorString; } public function isSetError() { return $this->isError; } } ?>
Dat is m'n klasse. Nu zou je die op volgende manier 'kunnen' aanroepen.
<?php
$obj = new test( "we", 6 );
if( $obj->isSetError() ) {
echo $obj->getError();
}
else {
echo "Som is: ". $obj->som();
}
?>
<?php $obj = new test( "we", 6 ); if( $obj->isSetError() ) { } else { echo "Som is: ". $obj->som(); } ?>
Zoals je ziet output ik niets via de klasse, maar roep ik de waarde aan via $obj.
Zoals ik op het begin al zij was mijn vraag, wat is het logischte(/beste).
Ik vond deze methode de beste, maar was toch benieuwd wat jullie hiervan denken. Als je een andere manier logischer/beter vind gelieve dit dan te zeggen (:)) en ook zeggen waarom?
|