Verder moet je in methods (functies binnen een class), nooit output produceren. Return de waarde en echo hem buiten de class
Thomas - 08/09/2005 09:57 (laatste wijziging 08/09/2005 11:35)
Moderator
Je roept in de functie (methode) getal() de functie vermenigvuldigen() aan met 2 parameters ($this->getal1 en $this->getal2) terwijl de functie vermenigvuldigen() gedeclareerd staat zonder parameters ...
<?php
class oTest
{
var $aGetallen = array();
function setGetal($iNummer, $iWaarde)
{
$this->aGetallen[$iNummer] = $iWaarde;
}
function vermenigvuldigen($aGetallen)
{
// maak hier een functie die alle elementen uit de aGetallen globale class array achter elkaar zet en dan vermenigvuldigt en de waarde niet PRINT, maar RETURNT!
}
}
$oTest = new oTest;
$oTest->setGetal(0,4);
$oTest->setGetal(1,5);
echo $oTest->vermenigvuldigen(array(0,1));
?>
// maak hier een functie die alle elementen uit de aGetallen globale class array achter elkaar zet en dan vermenigvuldigt en de waarde niet PRINT, maar RETURNT!
@Legolas: dat is de lelijkste oop die ik ooit heb gezien...
Dat is gewoon niet oop, maar verkrachting van het feit dat je met classes kunt werken in php. (no offence though)
<?php
class oTest
{
var $aGetallen = array(); //als je al persé met een array wil werken
var $product = 1;
function setGetal($waarde)
{
if(is_array($waarde)) {
for($i=0;$i<count($waarde);$i++) {
$this->aGetallen[] = $waarde[$i];
}
} else {
$this->aGetallen[] = $waarde;
}
$this->vermenigvuldigen();
}
function vermenigvuldigen()
{
//de getallen zijn al ingevoerd... dus je moet het niet "nog" is doen
for($i=0;$i<count($this->aGetallen);$i++) {
$this->product*= $this->aGetallen[$i];
}
}
function getProduct() {
return $this->product;
}
}
$oTest = new oTest;
$oTest->setGetal(4);
$oTest->setGetal(array(5,6));
echo $oTest->getProduct();
?>
<?php
class oTest
{
var$aGetallen=array();//als je al persé met een array wil werken
<?php
// class beginnen
class oTest
{
// variabelen defineïeren
var $aGetallen = array(); //als je al persé met een array wil werken
var $product = 1;
// de functie setGetal aanmaken
// deze functie heeft 1 argument (array of getal) nodig
function setGetal($waarde)
{
// kijken of het argument een array is
if(is_array($waarde)) {
// dat is zo, dus doorlopen we de array
for($i=0;$i<count($waarde);$i++) {
// for loopje om de array te doorlopen en de getallen in een
// nieuwe array te plaatsen
$this->aGetallen[] = $waarde[$i];
}
} else {
// het argument is geen array, dus een getal
// het getal steken we in de vooraf gedefinïeerde array
$this->aGetallen[] = $waarde;
}
// de rekenfunctie aanroepen
$this->vermenigvuldigen();
}
// de rekenfunctie maken
function vermenigvuldigen()
{
//de getallen zijn al ingevoerd... dus je moet het niet "nog" is doen
// we kunnen de getallen nu opvragen via $this->aGetallen[array nr]
for($i=0;$i<count($this->aGetallen);$i++) {
// for loopje om de getallen te vermenigvuldigen
$this->product*= $this->aGetallen[$i];
}
}
// functie maken voor het teruggeven van het resultaat
function getProduct() {
// het resultaat terug sturen
return $this->product;
}
}
// de class starten
$oTest = new oTest;
// de getallen invoeren
$oTest->setGetal(4); // 1 getal
$oTest->setGetal(array(5,6)); // een array met meerdere getallen
// het resultaat weergeven
echo $oTest->getProduct();
?>
<?php
// class beginnen
class oTest
{
// variabelen defineïeren
var$aGetallen=array();//als je al persé met een array wil werken
var$product=1;
// de functie setGetal aanmaken
// deze functie heeft 1 argument (array of getal) nodig
Nu ik het zelf nog eens bekijk, lijkt me ook niet echt nuttig om direct al de vermenigvuldigingsmethode aan te roepen in de set methode... maar beter van buiten de class, vanaf het object dan.