Php 如何创建不可分配的虚拟值?
我需要一个唯一类型的单一值,类似于C 我正在试验如何在PHP中实现这一点。以下是我到目前为止的想法:Php 如何创建不可分配的虚拟值?,php,singleton,Php,Singleton,我需要一个唯一类型的单一值,类似于C 我正在试验如何在PHP中实现这一点。以下是我到目前为止的想法: class Wild { public static $value; private function __construct() {} } call_user_func(function () { $r = new ReflectionClass(Wild::class); Wild::$value = $r->newInstanceWithoutCo
class Wild {
public static $value;
private function __construct() {}
}
call_user_func(function () {
$r = new ReflectionClass(Wild::class);
Wild::$value = $r->newInstanceWithoutConstructor();
});
现在,我可以通过Wild::$value轻松访问我的单身汉。问题是任何人都可以随时将Wild::$值重新分配给其他对象,这将破坏整个API。有没有办法防止这种情况
注意:构造函数是私有的,以防止意外实例化。关闭是为了防止$r泄漏,因为它在全局范围内
class Wild {
private function __construct() {}
public static function value() {
static $value;
if($value === null) $value = new self;
return $value;
}
}
虽然不完全一样,但它可能比使用反射更简单。@PleaseWait你在问什么?@PleaseWait我还是不明白你想说什么。Wild::$value需要公开访问,但开发人员不能将其重新分配给其他对象。