gpt4 book ai didi

php - Symfony2 : new instance at each service call instead of using the same

转载 作者:可可西里 更新时间:2023-10-31 23:57:19 26 4
gpt4 key购买 nike

我创建了一个服务,但每次调用它时,它都会创建一个新实例,而不是使用同一个实例。这是我的 services.yml:

my.sessiondata:
class: My\Bundle\Service\SessionData
calls:
- [ setServices, [@security.context, @service_container, @session, @doctrine.orm.entity_manager] ]
scope: container

还有我的服务:

namespace My\Bundle\Service;

class SessionData
{
protected $company;


public function setServices($securityContext, $serviceContainer, $session, $em)
{
var_export($this->company);
if (!$this->company)
{
$this->company = "TEST";
var_export($this->company);
}
}
}

我这样在 Controller 中调用服务:

    $sessionData = $this->container->get('my.sessiondata');

每次我调用 Controller 时, View 都会显示 NULL'TEST'。

知道实例丢失的原因吗?

最佳答案

在一次请求中,每次调用

$this->container->get('my.sessiondata')

只要范围设置为容器(默认),您就会得到相同的实例。

容器不会在请求之间共享实例。这就是 PHP 的工作方式。每个请求都是独立的。虽然您可以共享一些数据(例如在 session 中),但在单个请求期间创建的所有对象在完成后都会被销毁。下次您访问服务器时,一切都需要重新创建。

关于php - Symfony2 : new instance at each service call instead of using the same,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11486599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com