- Trait与单例
Trait与单例
trait A{
private static $instance;
static function getInstance()
{
if(!isset(self::$instance)){
self::$instance = new static();
}
return self::$instance;
}
}
class B{
use A;
function a()
{
var_dump('call at B');
}
}
class C extends B{
function a()
{
var_dump('call at c');
parent::a(); // TODO: Change the autogenerated stub
}
}
class D extends B{
use A;
function a()
{
var_dump('call at D');
parent::a(); // TODO: Change the autogenerated stub
}
}
$b = B::getInstance();
$c = C::getInstance();
$d = D::getInstance();
$c->a();
$d->a();
以上输出:
string(9) "call at B"
string(9) "call at D"
string(9) "call at B"