Graag zou ik willen weten hoe ik mijn probleem het beste kan aanpakken.
De bedoeling is om vanuit een method in de class Page een query uit te voeren. Dit "moet" volgens mij wel met database::query(). Ik snap niet helemaal goed waarom $database->query() niet werkt. Vanuit de scope van de method in het object $page is het object $database niet zo te bereiken. Maar als ik het op de :: manier doe, dan werkt $this in de class Database niet, die ik nodig heb om $queryContainer te updaten. Volgens mij is het ook niet de bedoeling om bijv. Database te extenden aan Page.
De idee hierachter is overigens dat ik gewoon alle queries wil verzamelen in deze property en die aan het eind van de pagina wil tonen (met $database->queryContainer). Misschien dat ik dat uiteindelijk beter kan doen met een aparte klasse Debug, maar ook dan zal zich wel een soortgelijk probleem voordoen. Dit is ook wel bedoeld om mijn begrip over classes etc. te verbeteren.
Dit is een beetje de flow van mijn pagina (waar het om gaat):
De bedoeling is om vanuit een method in de class Page een query uit te voeren. Dit "moet" volgens mij wel met database::query(). Ik snap niet helemaal goed waarom $database->query() niet werkt. Vanuit de scope van de method in het object $page is het object $database niet zo te bereiken. Maar als ik het op de :: manier doe, dan werkt $this in de class Database niet, die ik nodig heb om $queryContainer te updaten. Volgens mij is het ook niet de bedoeling om bijv. Database te extenden aan Page.
De idee hierachter is overigens dat ik gewoon alle queries wil verzamelen in deze property en die aan het eind van de pagina wil tonen (met $database->queryContainer). Misschien dat ik dat uiteindelijk beter kan doen met een aparte klasse Debug, maar ook dan zal zich wel een soortgelijk probleem voordoen. Dit is ook wel bedoeld om mijn begrip over classes etc. te verbeteren.
Dit is een beetje de flow van mijn pagina (waar het om gaat):
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
| include_once PATH_CLASSES.'page.class.php'; include_once PATH_CLASSES.'database.class.php'; $page = new Page($page_id); $database = new Database(); include_once 'inc/template.inc.php'; // een method uit page.class.php: class Page { function Page($id) { $this->id = $id; } function getDetails() { /* ** function getPageDetails() ** retreive current page data from db */ $query = 'SELECT ...'; $result = database::query($query); $aPageDetails = mysql_fetch_assoc($result); } } // en een stuk uit database.class.php: class Database { var $queryContainer; function Database() { $this->queryContainer = array(); } function query($query) { if(DEBUG) $this->queryContainer[] = $query; $result = mysql_query($query); if (!$result) { $message = 'Invalid query: ' . mysql_error() . "<br>\n"; $message .= 'Whole query: ' . $query; die($message); } else { return $result; } } } |
[ Voor 4% gewijzigd door X-Lars op 31-10-2005 18:20 ]