Mysqli class met static
Ik ben begonnen aan een mysqli class. Ik wil deze static maken zodat ik hem zo kan oproepen:
class::functie();
Nu is mijn vraag, heb ik dit zo goed gedaan en is de manier van de mysqli goed?
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
<?php
class DBCMI
{
private $db_host = "localhost";
private $db_name = "";
private $db_user = "";
private $db_pass = "";
private $debug = false;
private $debug_adres = "[email protected]";
private $headers;
private $connection;
private static function reportBug($error)
{
echo "<p>Er heeft zich een probleem voor gedaan, dit is automatisch gemeld aan de webmaster</p>";
mail(self::$debug_adres, "MySQL error op " . $_SERVER["HTTP_HOST"], "Op de pagina " . $_SERVER["REQUEST_URI"] . " is de volgende fout opgetreden:<br/><br/>" . $error, self::$headers);
}
public static function connect()
{
self::$headers .= "MIME-Version: 1.0\r\n";
self::$headers .= "Content-type: text/html;charset=ISO-8859-9\r\n";
self::$headers .= "From: BUG Report " . $_SERVER["HTTP_HOST"];
new mysqli(self::$db_host, self::$db_user, self::$db_pass, self::$db_name);
if(mysqli_connect_errno())
{
if(self::$debug)
{
die(self::reportBug("De volgende database kan niet geselecteerd worden: " . self::$db_name));
}
else
{
die("De volgende database kan niet geselecteerd worden: " . self::$db_name);
}
}
}
}
?>
class DBCMI
{
private $db_host = "localhost";
private $db_name = "";
private $db_user = "";
private $db_pass = "";
private $debug = false;
private $debug_adres = "[email protected]";
private $headers;
private $connection;
private static function reportBug($error)
{
echo "<p>Er heeft zich een probleem voor gedaan, dit is automatisch gemeld aan de webmaster</p>";
mail(self::$debug_adres, "MySQL error op " . $_SERVER["HTTP_HOST"], "Op de pagina " . $_SERVER["REQUEST_URI"] . " is de volgende fout opgetreden:<br/><br/>" . $error, self::$headers);
}
public static function connect()
{
self::$headers .= "MIME-Version: 1.0\r\n";
self::$headers .= "Content-type: text/html;charset=ISO-8859-9\r\n";
self::$headers .= "From: BUG Report " . $_SERVER["HTTP_HOST"];
new mysqli(self::$db_host, self::$db_user, self::$db_pass, self::$db_name);
if(mysqli_connect_errno())
{
if(self::$debug)
{
die(self::reportBug("De volgende database kan niet geselecteerd worden: " . self::$db_name));
}
else
{
die("De volgende database kan niet geselecteerd worden: " . self::$db_name);
}
}
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
Class DBding extends MySQLi{
//hier moeten nog variablen maar ik ben lui.
protected function __construct($host, $user, $pass, $db){
parent::__construct($host, $user, $pass, $db);
}
public static function connect(){
if(!isset(self::$instance)){
self::$instance = new self(self::$db_host, self::$db_user, self::$db_pass, self::$db_name);
if(mysqli_connect_errno()){//oude versies zijn bugged met MySQLi->connect_error
//jouw debug code
}
}
}
}
?>
Class DBding extends MySQLi{
//hier moeten nog variablen maar ik ben lui.
protected function __construct($host, $user, $pass, $db){
parent::__construct($host, $user, $pass, $db);
}
public static function connect(){
if(!isset(self::$instance)){
self::$instance = new self(self::$db_host, self::$db_user, self::$db_pass, self::$db_name);
if(mysqli_connect_errno()){//oude versies zijn bugged met MySQLi->connect_error
//jouw debug code
}
}
}
}
?>
Ik heb zelf de voorkeur van MySQLi zo houden als het is (niet static) en en globale variable maken.
Eventueel kun je een factory maken
Het is zo dat ik al een mysql class heb. Maar deze wil ik ombouwen naar mysqli, en als ik alle documenten moet aanpassen die de oude class gebruiken, dan ben ik heeeel lang bezig. Daarom wil ik er zelf eentje schrijven met de zelfde functies.