OOP Script
Ik heb een OOP scriptje gemaakt voor mijn site.
Wat kan er beter?
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
session_start();
class core
{
public $errors = array();
public function add_errors($error)
{
$this->errors[] = $error;
}
public function show_errors()
{
echo 'Er is een fout opgetreden:<br />';
foreach($this->errors as $error)
{
echo $error . '<br />';
}
unset($this->errors);
}
public function mysql_connect($server, $username, $password, $db)
{
$connect = @mysql_connect($server, $username, $password);
$db = mysql_select_db($db);
if(!$connect || !$db)
{
$this->add_errors('Kan niet verbinden.');
$this->show_errors();
}
}
}
$core = new core();
$core->mysql_connect('nvt', 'nvt', 'nvt', 'nvt');
?>
session_start();
class core
{
public $errors = array();
public function add_errors($error)
{
$this->errors[] = $error;
}
public function show_errors()
{
echo 'Er is een fout opgetreden:<br />';
foreach($this->errors as $error)
{
echo $error . '<br />';
}
unset($this->errors);
}
public function mysql_connect($server, $username, $password, $db)
{
$connect = @mysql_connect($server, $username, $password);
$db = mysql_select_db($db);
if(!$connect || !$db)
{
$this->add_errors('Kan niet verbinden.');
$this->show_errors();
}
}
}
$core = new core();
$core->mysql_connect('nvt', 'nvt', 'nvt', 'nvt');
?>
Dit is een klasse, nog geen OOP. Dat draait om het laten samenwerken van objecten, niet om het stoppen van functies in een klasse.
OOP beginners handleiding.
- Verder is het niet verstandig om een originele php functie naam ook als functie naam van een class method te maken. Gebruik andere namen.
- Daarnaast is het me een raadsel waarom je dit gemaakt hebt, want dit is gewoon hoe een mysqli->connect werkt.
- En in de functie mag NOOIT een echo staan. Return altijd de waarde waarna je ze echoëd in de procedurele code. Verder is het ook handig om in de connect functie een boolean te returnen, want hoe weet je in dit script of het gelukt is?
- Het onderdrukken van fouten is al helemaal erg. En wat zegt de error Kan niet verbinden? Betekend dat dat de connect niet werkt of dat de db select niet werkt?
- En waarom een unset als de errors zijn getoond?
- Een betere manier van foutafhandeling bij OOP is exceptions.
- Waarom meteen als het fout gaat de error tonen? Bij een online site wil je niet dat die error getoond wordt, maar wil je dat er een error log wordt gemaakt.
- Een public var lijkt me niet handig. Maak die protected of private, want nu kan je hem met $core::error = 'Er zijn geen errors!' wijzigen in Er zijn geen errors.
OOP staat voor OBJECT Oriented Programming, wat betekend dat je na denkt over objecten. Wat je nu hebt is een mysql connect, maar dan zelf gemaakt. Het verzamelen van functies in 1 class is wat anders dan OOP. Lees ook eens de - Verder is het niet verstandig om een originele php functie naam ook als functie naam van een class method te maken. Gebruik andere namen.
- Daarnaast is het me een raadsel waarom je dit gemaakt hebt, want dit is gewoon hoe een mysqli->connect werkt.
- En in de functie mag NOOIT een echo staan. Return altijd de waarde waarna je ze echoëd in de procedurele code. Verder is het ook handig om in de connect functie een boolean te returnen, want hoe weet je in dit script of het gelukt is?
- Het onderdrukken van fouten is al helemaal erg. En wat zegt de error Kan niet verbinden? Betekend dat dat de connect niet werkt of dat de db select niet werkt?
- En waarom een unset als de errors zijn getoond?
- Een betere manier van foutafhandeling bij OOP is exceptions.
- Waarom meteen als het fout gaat de error tonen? Bij een online site wil je niet dat die error getoond wordt, maar wil je dat er een error log wordt gemaakt.
- Een public var lijkt me niet handig. Maak die protected of private, want nu kan je hem met $core::error = 'Er zijn geen errors!' wijzigen in Er zijn geen errors.
Gewijzigd op 28/02/2011 21:59:24 door Wouter J
Wouter J op 28/02/2011 21:57:09:
OOP staat voor OBJECT Oriented Programming, wat betekend dat je na denkt over objecten. Wat je nu hebt is een mysql connect, maar dan zelf gemaakt. Het verzamelen van functies in 1 class is wat anders dan OOP. Lees ook eens de OOP beginners handleiding.
- Verder is het niet verstandig om een originele php functie naam ook als functie naam van een class method te maken. Gebruik andere namen.
- Daarnaast is het me een raadsel waarom je dit gemaakt hebt, want dit is gewoon hoe een mysqli->connect werkt.
- En in de functie mag NOOIT een echo staan. Return altijd de waarde waarna je ze echoëd in de procedurele code. Verder is het ook handig om in de connect functie een boolean te returnen, want hoe weet je in dit script of het gelukt is?
- Het onderdrukken van fouten is al helemaal erg. En wat zegt de error Kan niet verbinden? Betekend dat dat de connect niet werkt of dat de db select niet werkt?
- En waarom een unset als de errors zijn getoond?
- Een betere manier van foutafhandeling bij OOP is exceptions.
- Waarom meteen als het fout gaat de error tonen? Bij een online site wil je niet dat die error getoond wordt, maar wil je dat er een error log wordt gemaakt.
- Een public var lijkt me niet handig. Maak die protected of private, want nu kan je hem met $core::error = 'Er zijn geen errors!' wijzigen in Er zijn geen errors.
- Verder is het niet verstandig om een originele php functie naam ook als functie naam van een class method te maken. Gebruik andere namen.
- Daarnaast is het me een raadsel waarom je dit gemaakt hebt, want dit is gewoon hoe een mysqli->connect werkt.
- En in de functie mag NOOIT een echo staan. Return altijd de waarde waarna je ze echoëd in de procedurele code. Verder is het ook handig om in de connect functie een boolean te returnen, want hoe weet je in dit script of het gelukt is?
- Het onderdrukken van fouten is al helemaal erg. En wat zegt de error Kan niet verbinden? Betekend dat dat de connect niet werkt of dat de db select niet werkt?
- En waarom een unset als de errors zijn getoond?
- Een betere manier van foutafhandeling bij OOP is exceptions.
- Waarom meteen als het fout gaat de error tonen? Bij een online site wil je niet dat die error getoond wordt, maar wil je dat er een error log wordt gemaakt.
- Een public var lijkt me niet handig. Maak die protected of private, want nu kan je hem met $core::error = 'Er zijn geen errors!' wijzigen in Er zijn geen errors.
Dat is een heel lijstje, ik ga hem aanpassen, en even over die unset() in errors:
die gebruik ik als ik bv twee keer een error lijst wil maken.
Dan zie je die errors van de eerste error lijst niet in de tweede error lijst.
Die error functie's gebruik ik vooral voor meldingen als 'Verkeerde gebruikersnaam of wachtwoord' of 'Je bericht is te kort', zo'n dingen..
Dan over 'Kan niet verbinden', ik ga niet 'Kan niet verbinden met de database' zetten want het is een kindersite.
Dan nog over die mysql_connect, het leek me wel leuk om die functie in één klasse te zetten :p
Bedankt voor de tips.
Gewijzigd op 28/02/2011 22:21:18 door - Raoul -