在PHP中,您通常可以将对象放在数组中,如下所示:
class Car{}
$car = new Car();
// This runs without error
$array['vehicle'] = $car;
我有一个我自己构建的自定义MVC框架,我需要控制器从模型中获取ORM对象,因此它可以将其传递给视图。所以,我初始化我的用户对象:
$user = new User(2);
现在,我想将该用户对象放入$data
数组中,以便将其传递给视图:
($ user-> data返回一个ORM对象)
$array['user'] = $user->data;
问题是,在执行此操作后,我收到以下错误:
Object of class ORM could not be converted to string
我做错了什么?有什么我想念的吗? 感谢您提前提供任何帮助。
class User
的构造函数:$this->data = ORM::for_table("users")->find_one($this->user_id);
(我使用Idiorm作为ORM)
答案 0 :(得分:3)
如果收到如下错误消息:
Object of class ORM could not be converted to string
您应该问的第一个问题是,“为什么必须将其转换为字符串”?数组可以很好地使用字符串,因此您可以猜测$data
实际上是一个字符串,PHP认为您要修改$data[0]
。
正如您所见,如果您不小心,动态类型语言可能会让人感到困惑。
当您的变量显示可疑行为时,请尝试使用var_dump()
查看其中的实际内容。
在使用数组之前显式初始化数组(例如:$my_array = array();
)也是个好主意。