我知道...远离全局变量。
实际上,我确实需要具有一个可以访问的值,并且最重要的是可以从应用程序的不同部分进行可修改。这是我出于调试目的需要监视的某些操作的计数器。搜寻与Symfony和全局变量有关的任何内容,总是让我得到建议使用Container参数或Twig全局变量的结果,但根据Symfony文档,事实是这样:
您只能在编译容器之前设置参数:不能在运行时设置。
鉴于我需要控制器中的而不是视野中的Twig全局变量,因此超出了范围。
恕我直言,这两种解决方案更像是常量而不是变量。
因此,问题是:是否有最佳实践来使用Symfony获得我需要的东西,还是应该只使用PHP全局变量?
谢谢!
答案 0 :(得分:3)
使用私有属性ApplicationGlobals
创建一个服务(例如:$counter
),并使用公共setter和getter来读取和写入该值。服务类将自动实例化,并且可以在您可以使用容器的任何地方(将其放入控制器或将其作为参数传递给其他服务)访问。
稍后,您将能够在需要时使用适当的getter和setter添加多个变量,并在项目中使用它们。
我认为您甚至可以编写一个在Symfony终止时存储新值的析构函数。 http://symfony.com/doc/current/service_container.html#creating-configuring-services-in-the-container
答案 1 :(得分:0)
为什么不使用 services.yaml 中的参数部分?
似乎您也可以通过编程方式定义/修改变量:
$container->parameters()->set('app.admin_email', 'something@example.com');
https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration https://symfony.com/doc/current/configuration.html#configuration-parameters