为什么Laravel会话中的类实例会自动更新?

问题描述 投票:1回答:1

我试图在Laravel会话中添加一个类实例

<?php
namespace App;

class Object {
    public $age = 10;
}

.....

//Create new object and then put it in session.
$object = new \App\Object();
session()->put('test',$object);


$objectFromSession = session('object');
//Update object. It will update the the instance in session automatically.
$objectFromSession->age += 1;


$data = session('object');
//$data is updated. Why???
dump($data);

我想知道为什么会这样?

  • 为什么you$objectFromSession = session('object');是一个参考而不是一个值?
  • 为什么更新实例的变量$objectFromSession->age += 1;会自动保存?
php laravel session laravel-5 laravel-5.5
1个回答
2
投票

Laravel会话(Symfony会话)是一个非常简单的数据容器。因此,当您将数据存储在会话中时,它只是这样做:

public function set($name, $value)
{
    $this->attributes[$name] = $value;
}

所以,the object is passed by reference

© www.soinside.com 2019 - 2024. All rights reserved.