Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.
Op het moment dat je een database verbinding nodig hebt roep je die Database klasse aan en kun je gebruik maken van alle functionaliteit die de Database klasse je biedt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| class Database
{
function Database()
{
$db_servername = 'server';
$db_username = 'user';
$db_password = 'pass';
if (!$db = @mysql_connect("$db_servername","$db_username","$db_password"))
{
echo 'Could not connect to MySQL Server';
die;
}
}
function connect($database)
{
mysql_select_db($database);
}
} |
Waarna ik in de constructor van elke andere klasse iets kan zetten als:
1
| $db = new Database() |
En in de functie waar ik een specifieke database nodig heb:
1
| $db->connect('blaat') |
Tenminste... dat zou dan mijn interpretatie zijn hiervan
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.
Je slaat de spijker op z'n kop!Kaastosti schreef op donderdag 24 februari 2005 @ 11:32:
Tenminste... dat zou dan mijn interpretatie zijn hiervan
tip: Lees je eens wat meer in OOP, object georienteerd programmeren, er is meer dan alleen losse klassen aanmaken.
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.
Er zijn vast en zeker tutorials, boeken (e-books misschien wel), artikelen (waarin zaken worden toegelicht/beschreven/best practices e.d.) waarin OOP incombinatie met PHP wordt beschreven/uitgelegd te vinden via bijvoorbeeld Google.
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.
Dan zou ik er iig dit van maken:Kaastosti schreef op donderdag 24 februari 2005 @ 11:32:
Owkee da's inderdaad wel een idee... dan krijg ik dus ongeveer dit:
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
| <? class Database { var $connection; var $result; function Database($host, $username, $password) { $this->connection = mysql_connect($host, $username, $password) or die(mysql_error($this->connection)); } function selectDatabase($name) { mysql_select_db($name, $this->connection); } function query($query) { $this->result = mysql_query($query, $this->connection) or die(mysql_error($this->connection)); } function fetch() { return mysql_fetch_assoc($this->result); } } ?> |
Zo kun je nog connecties maken met meerdere databases en/of hosts. Overigens kun je het fetchen van een result beter verplaatsen naar een aparte RecordSet class oid. Op deze manier kun je namelijk maar 1 result te gelijk gebruiken.
1
2
3
4
| $query = "SELECT blahdiblah FROM meuk WHERE iets"; $result = mysql_query($query); $row = mysql_fetch_object($result) $var = $row->var |
Aangezien het meestal maar 1 record betreft werkt dat, anders moet ik er een while-loopje van maken. Maar jouw idee is misschien nog wel een probeerseltje waard. Alhoewel ik niet weet of ik uitkomsten van queries daadwerkelijk vaker wil gebruiken, kan het nooit kwaad ze even wat langer te bewaren
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.
1
2
3
| $recordSet = $database->query($query); $recordSet->fetch(); $var = $recordSet->get('var'); |
of
1
2
| $recordSet = $database->queryAndFetch($query); $var = $recordSet->get('var'); |
maar moet je zelf maar uitmaken.
Maar ik maak gebruik van verschillende databases en dat kan verschillen binnen een klasse. Dan lijkt me het niet handig om elke keer opnieuw een object aan te maken per queryPersoonlijk zou ik eerder in de constructor van je database class de connectie aanmaken
PHP Maakt geen nieuwe connectie aan als die er al is... tenminste, dat is zo als je het zonder classes doet.of iig een check inbouwen of je niet al een verbinding open hebt, om te voorkomen dat je steeds blijft verbinden.
Ik doe meestal iets als:
1
2
3
4
| while($row = mysql_fetch_object($result)) { $results[] = $row->var ..of Array("iets" => $row->var) } |
Werkt jouw systeem ongeveer hetzelfde?
[ Voor 34% gewijzigd door Kaastosti op 24-02-2005 14:41 ]
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.
Wil je deze aan de praat krijgen op PHP4 dan moet je ff de __construct() hernoemen naar dbConnection() uiteraard.
link: http://cv.zapguide.nl/database.class.txt
misschien heb je er wat aan
[ Voor 5% gewijzigd door SchizoDuckie op 24-02-2005 14:51 ]
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.
Lees deze maar eens door.Kaastosti schreef op donderdag 24 februari 2005 @ 14:56:
Die is wel heel erg uigebreidMaar ziet er zeker mooi uit, daar gaan we eens mee knutselen. Ik ben idd aan het werk in PHP4... hoe zit het eigenlijk in PHP5 met overloading van functies? Dat is namelijk een beperking in PHP4 die ik graag zou zien verdwijnen