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"
当前内容版权归 EasySwoole 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 EasySwoole .