oop database connection
goededag PHPers,
ik ben zin paar dagen bezig met het leren van oop mijn vraag is nu of dit redelijk goed is of er een snellere manier kan om db connection te maken.
mvg,
NIick
ik ben zin paar dagen bezig met het leren van oop mijn vraag is nu of dit redelijk goed is of er een snellere manier kan om db connection te maken.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class dbconnect
{
protected $host;
protected $user;
protected $password;
public function __construct($host,$user,$password)
{
$this->_host=$host;
$this->_user=$user;
$this->_password=$password;
if(mysql_connect("$host","$user","$password")){
echo'connected';
}
else{
echo'failure to connect';
}
}
}
$conn = new dbconnect('localhost','gebruikersnaam','wachtwoord');
?>
class dbconnect
{
protected $host;
protected $user;
protected $password;
public function __construct($host,$user,$password)
{
$this->_host=$host;
$this->_user=$user;
$this->_password=$password;
if(mysql_connect("$host","$user","$password")){
echo'connected';
}
else{
echo'failure to connect';
}
}
}
$conn = new dbconnect('localhost','gebruikersnaam','wachtwoord');
?>
mvg,
NIick
Gesponsorde koppelingen:
Het connecten is geen object, maar een method. Ik zou dus geen class dbconnect aanmaken. DB is daarin tegen wel een object. Het stelt namelijk de hele db voor. Dus een DB class kun je wel maken.
Een method van die DB class is onder anderen het verbinden met een SQL server. Dus je kan binnen de DB class wel een method connect maken. Omdat je elke keer als je een nieuwe DB object aanmaakt je een nieuwe verbinding nodig hebt kun je de connect method ook als constructor toevoegen.
Nu laat ik het OOP denken even ter zijde, dit is wel heel belangrijk maar je mist al de basis PHP. De fouten:
- Op regel 4 - 6 maak je $host, $user en $password aan. Maar op regel 10 - 13 gebruik je _host, _user en _password. Dit lijkt me niet de bedoeling.
- In een functie mag je nooit iets echoën. Altijd moet je de waarde returnen, niet de functie maar de verwerking van de functie moet bepalen hoe een gebruiker het te zien krijgt.
- Host, user en password zijn geen eigenschappen van een DB. Het zijn slechts dingen die nodig zijn voor een connect. Dus die hele global variabelen (regel 4 - 6 en 10 - 13) is overbodig.
- Mysql_connect moet je ergens storen. Dit is namelijk wel een eigenschap van een DB class.
- Variabelen horen niet tussen quotes.
- Waarom niet meteen de tabel select in de connect functie stoppen. Dan ben je meteen klaar en kunnen de andere methods toegewijd worden aan queries.
- In de constructor nooit een return doen, dit geeft een error. Ga dus werken met juiste foutafhandeling, door bijv. exceptions te gebruiken.
Ik denk dat je eerst nog een paar maanden de basis van normale PHP moet leren voordat je de stap maakt naar OOP. En mocht je door willen met OOP dan raad ik je aan eerst nog heel goed het object geörienteerd denken onder de knie te krijgen. Want dat heb je nu nog niet.
Een method van die DB class is onder anderen het verbinden met een SQL server. Dus je kan binnen de DB class wel een method connect maken. Omdat je elke keer als je een nieuwe DB object aanmaakt je een nieuwe verbinding nodig hebt kun je de connect method ook als constructor toevoegen.
Nu laat ik het OOP denken even ter zijde, dit is wel heel belangrijk maar je mist al de basis PHP. De fouten:
- Op regel 4 - 6 maak je $host, $user en $password aan. Maar op regel 10 - 13 gebruik je _host, _user en _password. Dit lijkt me niet de bedoeling.
- In een functie mag je nooit iets echoën. Altijd moet je de waarde returnen, niet de functie maar de verwerking van de functie moet bepalen hoe een gebruiker het te zien krijgt.
- Host, user en password zijn geen eigenschappen van een DB. Het zijn slechts dingen die nodig zijn voor een connect. Dus die hele global variabelen (regel 4 - 6 en 10 - 13) is overbodig.
- Mysql_connect moet je ergens storen. Dit is namelijk wel een eigenschap van een DB class.
- Variabelen horen niet tussen quotes.
- Waarom niet meteen de tabel select in de connect functie stoppen. Dan ben je meteen klaar en kunnen de andere methods toegewijd worden aan queries.
- In de constructor nooit een return doen, dit geeft een error. Ga dus werken met juiste foutafhandeling, door bijv. exceptions te gebruiken.
Ik denk dat je eerst nog een paar maanden de basis van normale PHP moet leren voordat je de stap maakt naar OOP. En mocht je door willen met OOP dan raad ik je aan eerst nog heel goed het object geörienteerd denken onder de knie te krijgen. Want dat heb je nu nog niet.
weet ik ik ben net 3 dagen bezig met oop dus vandaar dit topic over wat ik beter kan doen of hoe het anders kan moet gewoon wat tips om goed te beginnen ;)
Nick van der heijden op 18/12/2011 19:14:41:
moet gewoon wat tips om goed te beginnen ;)
Begin dan eens met het typen in het Nederlands. Dus met wat punten, komma's en hoofdletters. Je tekst zal daardoor veel beter leesbaar zijn.
probeer is zoiets
dit script hieronder connect met je database, sla het op in een php bestandje bijvoorbeeld connection.php
en als je het wilt gebruiken dan hoef je alleen include("connection.php"); tussen php tags te zetten en klaar. wilde je zoiets?
dit script hieronder connect met je database, sla het op in een php bestandje bijvoorbeeld connection.php
en als je het wilt gebruiken dan hoef je alleen include("connection.php"); tussen php tags te zetten en klaar. wilde je zoiets?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$server = "servernaam";
$gebruiker = "gebruikersnaam sql";
$wachtwoord = "wachtwoord sql";
$db = "database naam";
$connectie = mysql_connect($server,$gebruiker,$wachtwoord)
or die ("Kon niet connecten met de server");
mysql_select_db($db,$connectie)
or die ("Kon de database niet selecteren");
?>
$server = "servernaam";
$gebruiker = "gebruikersnaam sql";
$wachtwoord = "wachtwoord sql";
$db = "database naam";
$connectie = mysql_connect($server,$gebruiker,$wachtwoord)
or die ("Kon niet connecten met de server");
mysql_select_db($db,$connectie)
or die ("Kon de database niet selecteren");
?>
@reshadd, allereerst vraagt de TS om oop niet normaal PHP en ten tweede is het script dat jij geeft fout:
- Geen foutafhandeling
- or die is totaal slecht en moet je nooit gebruiken, niemand gaat dood als hij iets fout doet. Handel een script mooi af.
- Geen foutafhandeling
- or die is totaal slecht en moet je nooit gebruiken, niemand gaat dood als hij iets fout doet. Handel een script mooi af.
Quote:
- In een functie mag je nooit iets echoën. Altijd moet je de waarde returnen, niet de functie maar de verwerking van de functie moet bepalen hoe een gebruiker het te zien krijgt.
Hoe krijg ik dan ooit iets op mijn scherm te zien? ;)
Je method outputten in de view-laag ;-)?
Gewijzigd op 23/12/2011 01:20:59 door - Aar -
Nee, die netjes bufferen en dan nog lekker je response door je plugin systeem gooien en dan het response object mooi laten outputten :)
Ik heb het al voor elkaar gekregen de echo heb ik buiten me class gezet.
Echo geef ik nu mee via de object dus zo
Allen moet z'n tijd krijgen om het te leren ;)
En met een beetje hulp moet dat wel goed komen lijkt me
Echo geef ik nu mee via de object dus zo
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$conn= new db ('localhost','user','wachtwoord');
if(!$conn->connect()){
echo"Kan niet verbinden";
}
else{
echo"Verbonden";
}
if(!$conn->connect()){
echo"Kan niet verbinden";
}
else{
echo"Verbonden";
}
Allen moet z'n tijd krijgen om het te leren ;)
En met een beetje hulp moet dat wel goed komen lijkt me
Of een exception throwen vanuit de class, als de connect dood loopt.
@Pim, het kan zijn dat ik je opmerking waarschijnlijk verkeerd begrijp. Maar in een functie return je een waarde en in de verwerking ga bepalen hoe dit eruit komt. Want niet alles hoeft geëchoëd te worden, het kan ook gelogd worden o.i.d.
@nick, dat ziet er al een stukje beter uit. Maar de meest gebruikte en beste manier van foutafhandeling is exceptions. Lees ook eens deze tutorial: Foutafhandeling in PHP (Error Handling) - Exceptions[/php].
@nick, dat ziet er al een stukje beter uit. Maar de meest gebruikte en beste manier van foutafhandeling is exceptions. Lees ook eens deze tutorial: Foutafhandeling in PHP (Error Handling) - Exceptions[/php].
Jaa met dat throwen moet ik nog even kijken hoe dat werkt.
zover ik even snel heb gekeken kan het niet heel lastig zijn als je beetje kan programmeren :) Dan snap je het wel ongeveer.
Thanks voor de reacties en de hulp
zover ik even snel heb gekeken kan het niet heel lastig zijn als je beetje kan programmeren :) Dan snap je het wel ongeveer.
Thanks voor de reacties en de hulp
Off topic @Wouter
Wanneer je alleen objecten gebruikt, moet er dus ook een object zijn dat het resultaat output. Dit uiteraard een ander object dan datgene dat de content genereert, maar het is degelijk een object. Die output kan dan natuurlijk naar een file/DB/gewone output/eoa web API enz.
Wanneer je alleen objecten gebruikt, moet er dus ook een object zijn dat het resultaat output. Dit uiteraard een ander object dan datgene dat de content genereert, maar het is degelijk een object. Die output kan dan natuurlijk naar een file/DB/gewone output/eoa web API enz.
symfony2:
$response->send();
Gewijzigd op 23/12/2011 11:07:26 door Pim -
Wouter J op 23/12/2011 00:24:00:
@reshadd, allereerst vraagt de TS om oop niet normaal PHP en ten tweede is het script dat jij geeft fout:
- Geen foutafhandeling
- or die is totaal slecht en moet je nooit gebruiken, niemand gaat dood als hij iets fout doet. Handel een script mooi af.
- Geen foutafhandeling
- or die is totaal slecht en moet je nooit gebruiken, niemand gaat dood als hij iets fout doet. Handel een script mooi af.
fout is een groot woord want hij doet het.. maar het kan idd netter ;)



