Beste Tweakers,
Nadat ik al een aantal weken bezig ben met PDO wou ik eens een klasse gaan schrijven die ik dan voor meerdere websites kan gebruiken. Deze class werkt in eigenlijk wel zoals het moet. Alleen wanneer ik een query wilt uitvoeren na het verbinden moet het op de volgende manier:
Maar zou het eigenlijk liever op de volgende manier doen:
dus zonder de variable aan te roepen binnen de klasse. Ik heb gekeken naar de function __call maar daar ging het telkens mee fout wanneer ik meerdere functies in de klasse wou maken.
De huidige klasse ziet er zo uit, maar vraag me af of het wel op de manier mogelijk is zoals ik het graag zou willen en of het wel verstandig om het zo te gaan doen of waarom het misschien niet verstandig is.
Nadat ik al een aantal weken bezig ben met PDO wou ik eens een klasse gaan schrijven die ik dan voor meerdere websites kan gebruiken. Deze class werkt in eigenlijk wel zoals het moet. Alleen wanneer ik een query wilt uitvoeren na het verbinden moet het op de volgende manier:
PHP:
1
2
| $db = new PDOConnector(); $db->$db->query("SQL_QUERY"); |
Maar zou het eigenlijk liever op de volgende manier doen:
PHP:
1
2
| $db = new PDOConnector(); $db->query("SQL_QUERY"); |
dus zonder de variable aan te roepen binnen de klasse. Ik heb gekeken naar de function __call maar daar ging het telkens mee fout wanneer ik meerdere functies in de klasse wou maken.
De huidige klasse ziet er zo uit, maar vraag me af of het wel op de manier mogelijk is zoals ik het graag zou willen en of het wel verstandig om het zo te gaan doen of waarom het misschien niet verstandig is.
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
| <?php class PDOConnector { public $db; public function __construct() { $this->connect('sqlite', array('database' => './database.db')); } public function connect($db_type, $args) { try { switch($db_type) { case 'mysql': $this->db = new PDO('mysql:host='.$args['host'].';dbname='.$args['database'], $args['username'], $args['password']); break; case 'sqlite': $this->db = new PDO('sqlite:'.$args['database']); break; case 'pgsql': $this->db = new PDO('pgsql:dbname='.$args['database'].';host='.$args['database'], $args['username'], $args['password']); break; default: return false; break; } } catch(PDOException $e) { echo $e->getMessage(); } } } ?> |