StaticInstance.php
882 字节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?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;
/**
* @param array $params
* @param bool $refresh
* @return static
*/
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;
}
}