Is dit toegestaan in OOP?
Ik ben lekker aan het stoeien met OOP. Alleen vraag ik me af of dit mag:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
class logIn{
public $username;
public $password;
public $error;
public function __construct($gebruikersnaam, $wachtwoord){
$this->username = $gebruikersnaam;
$this->password = $wachtwoord;
}
public function checkLogin(){
if ($this->username != 'Donny'){
$this->error[] = 'Username klopt niet!';
}
if($this->password != 'test'){
$this->error[] = 'Password klopt niet!';
}
if(empty($this->error)){
return 'Alles ging goed';
} else {
return implode($this->error);
}
}
}
$check = new LogIn('Donny', 'test');
echo $check->checkLogin();
?>
class logIn{
public $username;
public $password;
public $error;
public function __construct($gebruikersnaam, $wachtwoord){
$this->username = $gebruikersnaam;
$this->password = $wachtwoord;
}
public function checkLogin(){
if ($this->username != 'Donny'){
$this->error[] = 'Username klopt niet!';
}
if($this->password != 'test'){
$this->error[] = 'Password klopt niet!';
}
if(empty($this->error)){
return 'Alles ging goed';
} else {
return implode($this->error);
}
}
}
$check = new LogIn('Donny', 'test');
echo $check->checkLogin();
?>
Groeten, Donny
Nee.
Misschien wil ik dit wel toepassen op een engelse website, dan moet ik de klasse aanpassen (oei, dat is uit den boze!). Misschien ben ik wel een hele evil website eigenaar en toon ik gewoon helemaal geen errors en tel ik alleen hoevaak en hoeveel fouten mijn bezoekers maken... Misschien ben ik wel niet zo aardig als ik lijk en geef ik helemaal geen melding bij succes...
Allemaal situaties waarin jouw huidige klasse tekort komt.
Een oplossing? Nou, zou een ijverige OOer snel zeggen, gebruik exceptions! Maar dan krijg je maar 1 error per keer en naar mijn mening zijn exceptions niet voor user errors.
Ander idee? Gewoon de errors returnen en dus een lege array wanneer er geen errors zijn? Ja, kan best. Dan kunnen we doen met die array wat je maar wilt, je kan het vertalen, tellen, verbergen, weergeven...
Als laatst kun je ook nog een klasse maken. Bijv. ErrorCollection (hé, dat komt bekent voor... :p). Deze kun je dan een iterator laten zijn, waardoor je hem ook als array kunt gebruiken.
Wouter J op 30/09/2013 18:04:06:
Een oplossing? Nou, zou een ijverige OOer snel zeggen, gebruik exceptions! Maar dan krijg je maar 1 error per keer en naar mijn mening zijn exceptions niet voor user errors.
Ik heb er toch ook een array van gemaakt? Tenminste, nu heb ik private $errors = array();
Elke $error[] word nu geimplode als er erros zijn... Klopt dit wel?
Ik dacht toch dat ik dat in mijn berichtje duidelijk maakte :)