应该注意,内部类型化属性从未初始化为默认的null。 当然,除非您自己将其初始化为空。 这就是为什么如果你试图在初始化之前访问它们,你总是会遇到这个错误。
**在初始化之前,不能访问类型化属性foo::$bar**
<? php(电话)
班 用户
{
公众的 $id(美元) ;
公众的 字符串$name ; //类型化属性(未初始化)
公众? 字符串$age = 无效 ; //类型化属性(已初始化)
}
$用户 =新 用户 ;
变量转储 ( 完整(_N) ( $用户 -> 身份证件 )); //布尔(true)
变量转储 ( is_完整 ( $用户 -> 名称 )); //PHP致命错误:在初始化之前,不能访问类型化属性User::$name
变量转储 ( 完整(_N) ( $用户 -> 年龄 )); //布尔(true)
?>
另一件值得注意的事情是,不可能将类型为object的属性初始化为null以外的任何值。 因为属性的计算发生在编译时,而对象实例化发生在运行时。 最后一点,由于可调用类型的上下文相关行为,它不受支持。