<?php
//Maak de doos.
class calculator
{
//Geef aan welke variabelen je wilt gaan gebruiken, en welke rechten ze hebben.
protected $number; //Het getal dat we als eerste invoeren, en ook de uitkomst zal zijn.
protected $operator; //Waarmee er gerekend moet worden.
protected $number_sec; //Het tweede getal dat ingevoerd wordt.
protected $operators = array('+', '*', '-', '/'); //Een array met alle toegestane operators
/**
* Een functie, om je eerste getal op te slaan.
*
* Deze moet public zijn, want $number is protected, en niemand buiten de doos kan daar dus bij.
* En om er voor te zorgen dat wij er straks bij kunnen, moet het een public function zijn,
* zodat wij de rechten hebben om deze functie van de doos te gebruiken.
*/
public function set_number($input)
{
//Even checken of het getal een getal is.
if( is_numeric($input) )
{
/**
* en dan met $this, $number een waarde geven. $this is dus de doos, het object zelf. $this->number zegt dus :
* Haal uit mij, de variabele getal op. $this is mij. mezelf, de doos.
* We geven onze doos zijn variabele number, de waarde van $input, dus het getal dat is ingevoerd.
*/
$this->number = $input;
}
else
{
/**
* Het was geen getal, dus moeten we een waarschuwing terug sturen.
*
* We gebruiken de boolean 'False' om te zeggen dat het mislukt is.
*/
return false;
}
}
/**
* Nu moeten we een soortgelijke functie maken, om de operator (+,-,*,/) op te slaan.
* Omdat ook deze, protected is zal de doos dat moeten doen, en word het dus een public function.
* Public betekend dat wij de functie straks kunnen gebruiken,
* omdat public betekend dat iedereen het recht heeft deze te gebruiken.
*/
public function set_operator($operator)
{
/**
* We gebruiken de array, met alle operators die zijn toegestaan, en kijken dan met 'in_array()' of $operator voor komt in de array.
* Als deze erin voorkomt, is het een goede operator, anders is er iets anders ingevuld als +,-,*,/
*/
if( in_array($operator, $this->operators) )
{
//Mooi, er is een goede operator ingevoerd. nu gaan me met $this, die waarde opslaan in onze doos.
$this->operator = $operator;
}
}
/**
* Goed! we hebben nu bijna onze som af. Nu moeten we nog ons tweede getal invoeren.
* Dit zijn exact de zelfde checks als bij getal 1.
* Het moet public zijn, zodat wij hem straks kunnen gebruiken.
* Getal twee kan zelfs nog gebruikt worden na de berekening,
* om de uitkomst te gebruiken als getal 1 voor een nieuwe berekening, en getal 2 dan weer als een tweede getal!
*/
public function set_number_sec($input)
{
//Even checken of het getal een getal is.
if( is_numeric($input) )
{
/**
* en dan met $this, $number_sec een waarde geven. $this is dus de doos, het object zelf. $this->number_sec zegt dus :
* Haal uit mij, de variabele getal op. $this is mij. mezelf, de doos.
* We geven onze doos zijn variabele number_sec, de waarde van $input, dus het getal dat is ingevoerd.
*/
$this->number_sec = $input;
}
else
{
/**
* Het was geen getal, dus moeten we een waarschuwing terug sturen.
*
* We gebruiken de boolean 'False' om te zeggen dat het mislukt is.
*/
return false;
}
}
/**
* Nu dat uit de weg is, moeten we rekenen!
* We gaan kijken met wat we moeten rekenen, en de output stoppen we in $number.
* Want zo werkt een rekenmachine ook, die vervangt zijn getal door de uitkomst.
*/
public function calculate()
{
//De switch, die ken je nog wel!
switch($this->operator)
{
case '+' : //Is het plus?
$outcome = $this->number + $this->number_sec;
break;
case '-': //Is het min?
$outcome = $this->number - $this->number_sec;
break;
case '*': //Is het keer?
$outcome = $this->number * $this->number_sec;
break;
case '/': //Is het delen door?
$outcome = $this->number / $this->number_sec;
break;
}
//Alles is goed gegaan, we zetten het getal in $number, omdat dit tevens ons nieuwe eerste getal word.
$this->number = $outcome;
}
/**
* poeh, bijna klaar. Nu wil je ook nog zien wat de uitkomst is natuurlijk!
* Deze word gevraagd van de doos, dus die moeten we netjes afgeven, het is niet voor niets ee npublic function!
*/
public function get_outcome()
{
/**
* Simpelweg een return, we hoeven er niks meer mee te doen.
* En gezien getal 1 ook de uitkomst is, returnen we die.
*/
return $this->number;
}
}
?>