<?php declare(strict_types=1); /** * This file is part of Hyperf. * * @link https://www.hyperf.io * @document https://hyperf.wiki * @contact group@hyperf.io * @license https://github.com/hyperf/hyperf/blob/master/LICENSE */ namespace Hyperf\Utils\Traits; use Hyperf\Utils\Context; trait StaticInstance { protected $instanceKey; public static function instance($params = [], $refresh = false) { $key = get_called_class(); $instance = null; if (Context::has($key)) { $instance = Context::get($key); } if ($refresh || is_null($instance) || ! $instance instanceof static) { $instance = new static(...$params); Context::set($key, $instance); } return $instance; } }