在会话Symfony 2中存储对象 - php

我正在用Symfony 2编写一个小的电子商店应用程序,我需要某种方式在会话中存储用户的购物车。我认为使用数据库不是一个好主意。

该应用程序将使用诸如“产品”,“类别”,“ ShoppingCart”之类的实体,其中“产品”和“类别”被持久化到数据库中,并且用户将在其ShoppingCart中选择产品。

我发现了NativeSessionStorage类,该类应该将实体保存到会话中。但是,没有将实现的书面过程应用到应用程序中。

我该在控制器中还是在单独的ShoppingCart类中使用它?您能举一个NativeSessionStorage用法的简短示例吗?

编辑:
问题设置不正确:

目标不是将所有产品ID保存到Cookie中。目的是在服务器端的应用程序内存中仅保存篮子(装有产品)的引用,并为用户分配适当的篮子。在PHP中甚至可以做到这一点吗?

编辑2:

使用服务是否更好?

参考方案

不知道这种方法是否是临时存储数据的更好方法。您可以使用它来实例化会话对象:

$session = $this->get("session");

不要忘记控制器中的“用途”:

use Symfony\Component\HttpFoundation\Session;

然后,当您要设置变量时,会话将自动开始:

$session->set("product name","computer");

这是基于Session类的使用,易于理解。常用定义:

get(string $name, mixed $default = null)

Returns an attribute.

set(string $name, mixed $value)

Sets an attribute.

has(string $name)

Checks if an attribute is defined.

另外,请查看存储数据的其他方式:Multiple SessionStorage

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

Symfony 2:如何通过路由名称获取默认路由? - php

是否可以通过名称检索有关某条路线的信息,或获取所有路线的列表?我需要能够获取任意路径的_controller中的defaults值,而不仅仅是当前路径。这有可能吗?P.S .:我发现我可以找到使用YAML的路由,但是重新解析似乎是不必要且繁重的。 参考方案 我真的很擅长回答自己的问题。要获取路由,请在路由器上(控制器内的getRouteCollection(…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…