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

我需要一个唯一类型的单一值,类似于C

我正在试验如何在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::$值重新分配给其他对象,这将破坏整个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需要公开访问,但开发人员不能将其重新分配给其他对象。