PHP中如何获取类属性的预期数据类型?
获取PHP类属性的预期数据类型
要获取类属性的预期数据类型(比如你例子中的DateTime),可以使用PHP的反射机制来实现,这是官方提供的获取类元数据的标准方式:
代码示例
首先定义包含目标属性的类:
class Event { public ?DateTime $start = null; }
然后通过反射获取属性类型:
// 初始化类的反射实例 $reflection = new ReflectionClass(Event::class); // 获取指定属性的反射对象 $property = $reflection->getProperty('start'); // 获取属性的类型声明对象 $type = $property->getType(); // 提取实际的类型名称到变量 $expectedType = null; if ($type instanceof ReflectionNamedType) { // 无论是否可空,直接获取类型名称 $expectedType = $type->getName(); } // 此时$expectedType的值为"DateTime" var_dump($expectedType); // 输出 string(8) "DateTime"
关键说明
ReflectionClass:用于获取类的全部元数据,包括属性、方法等。getProperty('start'):定位到目标属性,返回ReflectionProperty实例。getType():返回属性的类型声明对象,对于?DateTime这种可空命名类型,返回的是ReflectionNamedType实例。getName():直接获取类型的名称字符串,也就是你需要的DateTime。
内容的提问来源于stack exchange,提问作者Kris_Stoltz
相关产品推荐
相关产品推荐

