SingletonTrait.php 905 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace app\common\library\xmwechat;
  3. trait SingletonTrait
  4. {
  5. // 存放实例 私有静态变量
  6. protected static $instance;
  7. // 声明私有构造方法为了防止外部代码使用new来创建对象。
  8. private function __construct()
  9. {
  10. }
  11. // 私有化克隆方法 static
  12. private function __clone()
  13. {
  14. }
  15. // 重写__sleep方法,将返回置空,防止序列化反序列化获得新的对象
  16. public function __sleep()
  17. {
  18. return [];
  19. }
  20. // 防止被反序列化
  21. public function __wakeup()
  22. {
  23. }
  24. /**
  25. * @desc 公有化获取实例方法
  26. * @return static
  27. */
  28. public static function getInstance(): static
  29. {
  30. if (!isset(self::$instance)) {
  31. // 这里不能new self(),self和static区别
  32. self::$instance = new static;
  33. }
  34. return self::$instance;
  35. }
  36. }