Versio

extends PDO

Overzicht Reageren

- Raoul -
Redacteur

- Raoul -

30/01/2012 22:43:11
Quote Anchor link
Hoi!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    class DB extends PDO {
        public function __construct() {
            parent::__construct('mysql:dbname=NVT;host=localhost', 'root', '');
        }
    }

?>

Dat werkt wel, maar ik kan bv niet DB::query() doen, het kan enkel via $db_var->query().

Hoe pas ik dit aan?

Raoul
 
PHP hulp

PHP hulp

24/05/2012 14:54:53
Gesponsorde koppelingen:
 
Jelle -

Jelle -

30/01/2012 22:48:48
Quote Anchor link
Dit komt doordat :: een statische aanroep is, je zult er dus iets omheen moeten maken, of je dat op die manier wilt is een andere kwestie.

Een beetje in deze geest, alleen maak je dan welke keer een verbinding :)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    public static function query($q){
        new
DB()->query($q);
    }

?>
 
- Raoul -
Redacteur

- Raoul -

30/01/2012 23:29:44
Quote Anchor link
Iedere keer een nieuwe connectie is ook niet echt goed...
 
Merijn Venema

Merijn Venema

30/01/2012 23:39:15
Quote Anchor link
Waarom zou je een DB class maken als je er verder niets mee doet? Dan kun je net zo goed een PDO object gebruiken.

$db = new PDO("je dsn string", $user, $pass);
 
Wouter J

Wouter J

31/01/2012 08:56:22
Quote Anchor link
En waarom zou je de query method static willen maken? Dat is totaal niet gepast in dit voorbeeld.
 
Kees Schepers
Moderator

kees Schepers

31/01/2012 09:16:22
Quote Anchor link
Internet Verslaafde op 30/01/2012 23:29:44:
Iedere keer een nieuwe connectie is ook niet echt goed...


Ik zou het inderdaad ook niet op deze manier doen, maar ik denk dat de connectie niet elke keer opnieuw aangemaakt wordt ook al lijkt dat. Volgens mij gebruikt PDO onder water dezelfde resource dan. Tenzij je op een andere database oid verbind.

Als je een wrapper om PDO heen wilt bouwen zou ik echt kijken naar een aantal open-source projecten die dat al gedaan hebben, Propel, Zend, Doctrine etc.
 



Overzicht Reageren

Get Adobe Flash player