Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
if (! self::$_instance ) {
self::$_instance = new static; // тут только начиная с php 5.3.*if (! static::$_instance ) {
static::$_instance = new static();?static:: работает только для методов, но не для полей? А скобочки после new static не нужны?self::$_instance не перепишется приватное поле родительского класса?class Sin
{
static private $_instance = 'Sin $_instance';
public function test()
{
return self::$_instance;
}
}
class B extends Sin
{
static protected $_instance = 'B $_instance';
public function test2()
{
return self::$_instance;
}
}
$s = new B;
var_dump($s->test()); // Sin $_instance
echo '<Br>';
var_dump($s->test2()); // B $_instance
class Sin
{
public $a = 1;
static private $_instance;
static function getInstance()
{
if (! self::$_instance ) {
self::$_instance = new static; // тут только начиная с php 5.3.*
}
return self::$_instance;
}
}
class B extends Sin
{
public $a = 2;
}
$b = B::getInstance();
$sin = Sin::getInstance();
Singleton и Late static binding