我需要一个唯一类型的值,类似于C#的DBNull.Value。
我正在尝试如何在PHP中实现它。这是我到目前为止所提出的:
class Wild {
public static $value;
private function __construct() {}
}
call_user_func(function () {
$r = new ReflectionClass(Wild::class);
Wild::$value = $r->newInstanceWithoutConstructor();
});
现在我可以通过Wild::$value
轻松访问我的单身人士了。问题是任何人都可以随时将Wild::$value
重新分配给其他内容,这会破坏整个API。有什么方法可以阻止这种情况吗?
N.B。构造函数是私有的,以防止意外实例化。关闭是阻止$r
泄漏,因为它在全球范围内。
答案 0 :(得分:0)
class Wild {
private function __construct() {}
public static function value() {
static $value;
if($value === null) $value = new self;
return $value;
}
}
它不是相当相同,但它可能不如使用反射那么黑。