通常的单例模式都是直接在一个类中直接通过三私一公的方式进行实现,当然这是一种最常用的实现方式,当然还有别的方式实现。
在 easyswoole
中通过实现一个 trait
方式单例获取对象,我觉得有一定的借鉴作用,在这里摘录出来,作为笔记。
Singleton.php
<?php
/**
* Created by PhpStorm.
* User: yf
* Date: 2018/5/24
* Time: 下午3:56
*/
// 这里的命名空间要根据实际情况修改一下即可。
namespace EasySwoole\Component;
trait Singleton
{
private static $instance;
static function getInstance(...$args)
{
if(!isset(self::$instance)){
self::$instance = new static(...$args);
}
return self::$instance;
}
}
在想要实现单例的类中,只要使用 use
引入即可。例:
<?php
use EasySwoole\Component\Singleton;
class Test
{
// 在这里通过 use 引入 trait
use Singleton;
public function test()
{
}
}