【发布时间】:2021-12-03 16:31:06
【问题描述】:
我的User 类中有以下代码:
class User {
public int $id = 0;
public string $code;
public string $name;
}
在从数据库中分配$code时,我需要找出var是什么类型才能分配它,所以我在__construct函数中为User使用gettype():
foreach($data as $key => $val) {
settype($val, gettype($this->$key));
$this->$key = $val;
}
但是它返回这个错误:
致命错误:未捕获的错误:类型化属性 User::$code 在初始化之前不得访问
我了解错误消息的含义。
有没有办法在变量被设置之前找出它的转换类型?
【问题讨论】:
-
在设置值之前,变量实际上没有类型。
-
不确定这种方法是否特别有用。这意味着具有特定数据的类必须不断检查它自己的数据类型——这是一个巨大的开销(恕我直言)。
-
@DonR 我看不出类型转换的意义,如果它在 __construct 没有类型但我已经声明了它,为什么我不能检查它是什么?跨度>
-
@NigelRen 您指的是哪种方法?
-
所以,真正的问题是 PDO 为您提供了字符串。也许你应该解决这个问题?