symfony2服务不是单身人士

时间:2012-04-01 04:55:36

标签: php symfony

我正在Symfony2上创建一个简单的pastebin Web应用程序,但我不能创建一个global / singleton /“container-scoped”服务。我可能犯了一个初学者的错误。

The symfony2 service container doc表示服务“只创建一次,每次请求服务时返回相同的实例”,但每次请求都会调用我的服务构造函数。

我可以从日志中轻松验证这一点。我只是刷新/p/new而我看到另一个

[2012-03-31 21:32:56] app.INFO: InMemoryPasteService::__construct() [] []

我也通过记录

的结果来确认
spl_object_hash($this->get('twobulb_paste_service'))

在控制器中(每个请求的哈希值都不同)。

环境(app / prod)似乎并不重要。

How to work with Scopes表示默认范围是“容器”,所以我认为这意味着应该只有一个服务类实例。

我开始使用Symfony标准发行版(没有供应商)版本2.0.12。

源代码:

可能类似的帖子:

有什么想法吗?

2 个答案:

答案 0 :(得分:11)

以这种方式在请求之间没有保存状态。您可以将其视为在每个请求之间重新启动PHP解释器。这就是PHP的工作原理。

答案 1 :(得分:2)

根据this post spl_object_hash创建对象内部指针的md5哈希值。因此,它在请求之间提供不同的哈希是正常的。哈希在相同的请求周期中不会更改。