Ich habe gelesen, dass man den Konstruktor auf alle Fälle überschreiben und dort den Parent-Konstruktor aufrufen soll.
So'n Quatsch. Lass das mal. o0 (Oder mach's von mir aus ein Mal in der Vaterklasse, aber nicht jedes mal)
Btw, PHP-Klammer bei PHP-Code bitte weglassen, dann funktioniert das Highlighting.
PHP-Quellcode:
class DBEXception_QueryFailed extends DBException
{}
Und nochmal btw, du brauchst nach der PHP-Klammer nicht einrücken. Damit sparst du wertvollen Platz nach rechts. Und das Einrücken nach der Klammer ist wirklich sinnlos. (Du rückst in Delphi ja auch nicht nach
program oder
unit ein. (Oder wie auch immer das da oben heißt^^)
Ich denke mal, so hast du dir das vorgestellt.
Perfekt.
Und hier mal eine einfache und
ungetestete Implementation der Registry:
PHP-Quellcode:
// Registry.php
final class Registry
{
private static $instance = NULL;
private $data =
array();
private function __construct() {}
private function __clone() {}
public static function getInstance() {
if (NULL === self::$instance) {
self::$instance =
new self;
}
return self::$instance;
}
public function get($id)
{
return $this->data[$id];
}
public function __get($id)
{
return $this->get($id);
}
public function set($id, $value)
{
$this->data[$id] = $value;
}
public function __set($id, $value)
{
return $this->set($id, $value);
}
// TODO throw exception on missing index
// TODO unset, __unset, isset, __isset
}
// Bootloader.php
abstract class Bootloader
{
private static function connect_mysql()
{
$registry = Registry::getInstance();
$registry->
db =
new mysqli('
127.0.0.1', '
', '
', '
mysql');
if (mysqli_connect_error()) {
die('
Connect Error (' . mysqli_connect_errno() . '
) ' . mysqli_connect_error());
}
printf("
Connected to %s\n", $registry->
db->host_info);
}
public static function boot()
{
register_shutdown_function("
Bootloader::shutdown");
self::connect_mysql();
}
public static function shutdown()
{
Registry::getInstance()->
db->close();
printf("
Connection closed.\n");
}
}
// index.php
Bootloader::boot();
// IrgendeinModel.php
class Model
{
public function __construct()
{
$this->
db = Registry::getInstance()->get('
db');
echo $this->
db->
query('
SELECT NOW() AS `now`')->fetch_object()->now . "
\n";
}
}
new Model();
Liebe Grüße,
Valentin