首页 > 解决方案 > PHP 7.4:如何检查类型属性是否已初始化(包括使用 null 进行初始化)?

问题描述

我有A类:

class A
{
    private ?string $typed;

    public function isTypedInitialized(): bool
    {
        // ???
    }
}

如何检查 $this->typed 是否已经用包括 null 在内的任何值初始化?isset() 不符合我的需要,因为它为 null 返回 false。

标签: php

解决方案


我在反序列化对对象的请求时完成了这项检查,并且检查初始化是验证过程的一部分。解决方案是使用反射,在您的示例中,代码如下所示:

public function isTypedInitialized(): bool
{
    return (new ReflectionClass(self::class))
        ->getProperty('typed')
        ->isInitialized($this);
}

但我不认为这种检查应该是同一个班级的一部分


推荐阅读