Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp3:Can';t向会话中存储的对象添加属性。_Php_Oop_Session_Cakephp_Object - Fatal编程技术网

cakephp3:Can';t向会话中存储的对象添加属性。

cakephp3:Can';t向会话中存储的对象添加属性。,php,oop,session,cakephp,object,Php,Oop,Session,Cakephp,Object,我通过执行以下操作将对象存储到会话: $this->request->session()->write('order', $order); $order = $this->request->session()->read('order'); $order->client_id = $client->id; $this->request->session()->write('order', $order); 在另一个控制器中,我

我通过执行以下操作将对象存储到会话:

$this->request->session()->write('order', $order);
$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);
在另一个控制器中,我尝试向同一对象添加另一个属性:

$this->request->session()->write('order.client_id', $client->id);
但由于某种原因,这会覆盖整个对象,剩下的对象只有一个属性,即新创建的client_id

正确的方法是什么

点用于表示嵌套数组。此符号用于所有使用名称/键的会话组件方法

--

您确定
$order
变量是数组而不是对象吗

如果
$order
是一个对象,则必须获取该对象,对其进行更改,然后将其再次放入会话中

$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);

能够通过以下方式解决此问题:

$this->request->session()->write('order', $order);
$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);

你确定你是?课后我特别想知道这些括号。我想我用对了。请记住,我使用的是CakePHP3。哦,糟糕,你是对的,这似乎是正确的方法。您是否更改了cakephp代码中的任何内容?$order是一个对象。有没有一种方法可以添加属性?如果这个答案对你来说是正确的,你可以“检查它”,这样人们就会知道这是一种方法。