昨天我在IRC Symfony2频道讨论了最佳实践方法和教程(sf2-website上的书籍,食谱).
有人说服务总是无国籍.他的意思是在服务类中不应该与实体连接.但是,如果我需要预先格式化数据库中的内容,我应该如何处理用户生成的内容?
虽然有人说服务应该是无状态的,但我根据本教程创建了服务和工厂服务:http: //brentertainment.com/2012/02/28/contextualizing-your-symfony2-application-with-the-service-container /
我的配置服务的命名目前有点糟糕,但我目前没有策略或良好的命名概念.
目前我打电话$this->get('test.conf')->getCategory('data-browser')给控制器.通过这种方式做到这一点"感觉很好",因为我不必在控制器中重复该功能.然后,服务test.conf调用工厂服务test.conf_factory,它获取service.configuration的实例.
问题:
服务是否适合像我这样获得预先格式化的内容?
服务配置是否正确?或者,我可以简化 test.conf_factory,test.conf并test.configuration以任何方式?目前我真的不知道我做得对.
是否更好(或可能)使用该服务test.configuration并创建另一个服务,该服务只是在构造函数中创建一个test.configuration实例,并通过调用方法'get'实例返回?(http://symfony.com/doc/current/components/dependency_injection/introduction.html)有没有像大多数symfony开发人员那样的证明方式?
配置工厂:
namespace Test\CoreBundle\Factory;
use Test\CoreBundle\Entity\Account;
use Test\CoreBundle\Service\Configuration;
class ConfigurationFactory
{
private $user;
private $configuration;
public function __construct(Account $user = null, Configuration $configuration)
{
$this->user = $user;
dump($user);
$this->configuration = $configuration;
}
public function get()
{
if ($this->user) {
// dump($this->user);
$this->configuration->setAccountid($this->user->getId());
}
return $this->configuration;
}
}
Run Code Online (Sandbox Code Playgroud)
配置服务:
<?php
namespace test\CoreBundle\Service; …Run Code Online (Sandbox Code Playgroud)