The following code will lead to an error
Access level to B::__construct() must be public (as in class A)
class A
{
public function __construct(){}
}
class B extends A
{
private function __construct()
{
parent::__construct();
}
}
$B = new B();
?>
Weird...
3 comments:
class A
{
private function __construct(){}
}
$A = new A();
funktioniert doch auch nicht - was ist da weird?
Sicher, der gedachte Nutzen eines privaten Konstruktors ist auch eigentlich im singleton pattern, also so:
class A
{
public function __construct(){}
}
class B extends A
{
private static $instance = NULL;
private function __construct()
{
parent::__construct();
}
public static function instance()
{
if (self::$instance==NULL)
self::$instance = new B();
return self::$instance;
}
}
$B = new B();
?>
war von mir etwas unglücklich ausgedrückt...
die letzte Zeile sollte demnach auch heissen:
$B = B::instance();
Post a Comment