开头的一些信息。我使用的是2.7.0-BETA1,但以下问题更多的是关于Symfony2的Best-Practice。 我阅读了Symfony的最佳实践指南。对于基础知识来说,它们很好,但有些事情对我来说似乎并不清楚。
我们正在从非框架应用程序迁移到symfony2。我们将把核心部分放入一个捆绑包中。 (我知道对此有不同的看法。)插件将在测试\plugin\FooblaPluginBundle
每个用户都可以在他的个人资料中设置一些设置,这些设置保存在表格中(conf)(字段:id,category,key,value,accountid) 我刚开始写一个服务。 (刚开始,因为我不确定正确的方法)
<?php
namespace Test\CoreBundle\core;
use Doctrine\ORM\EntityManager;
class Configuration {
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function loadAll($accountid = '1') {
$conf = $this->em->getRepository('TestCoreBundle:Conf')->findAllByAccount('1');
dump($conf);
}
}
最后控制器会像
那样$conf = $this->get('test.conf');
$conf->setCategory('foobla');
$conf->get('keyname');
只需填写代码:(services.yml)
services:
test.conf:
class: Test\CoreBundle\core\Configuration
arguments: [ @doctrine.orm.entity_manager ]
这是正确的方式吗?
使用的密钥/设置将(再次)在代码中使用默认值和可能的选项进行硬编码,用户可以设置这些选项。在注册时,将为用户设置默认值。
这些信息将放在我将放入Test\CoreBundle\Core\Configuration\{category}
第二个&#34;基地&#34;题:
我们有一些可以独自留下的课程。 (例如,有一个日期/时间类,它对给定的时间戳进行一些计算)但我不知道在哪里放置它。
如果我把它们放在in&#34; Services
&#34;它迟早会混乱。
将它们放在不同的(基于它们的功能)不同的文件夹中会更好。
请让我知道有关这个想法和想法的任何想法。我很乐意听到你的消息。
更新:最后的想法:将类直接放在命名空间文件夹中是否完全错误&#34; test&#34; ?
答案 0 :(得分:1)
我认为第一个问题是询问您的Conf服务是否正确设置并且答案是肯定的。在某些时候,您应该学习如何将存储库定义为服务,并注入存储库而不是完整的实体管理器。但这只是一个改进。
第二个问题似乎是谈论独立组件。制作一个Test \ Component目录并将它们放在那里。最终,您可能希望将它们放在自己的存储库中,并使用composer来加载它们。但这又是一个改进。
如果您还没有这样做,请花些时间为迁移编写一些自动化测试。随着事情的进展,设计变得更加清晰,这将使你有能力重新考虑因素。