【发布时间】:2015-05-05 12:36:52
【问题描述】:
开始的一些信息。我正在使用 2.7.0-BETA1,但以下问题更多关于 Symfony2 的最佳实践。 我阅读了 Symfony 的最佳实践指南。对于基础知识,它们很好,但有些事情我似乎不清楚。
我们正在从非框架应用程序迁移到 symfony2。我们将把核心部分放在一个包中。 (我知道对此有不同的看法。)插件将在Test\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}
第二个“基础”问题:
我们有一些可以单独上课的课程。 (例如有一个日期/时间类,它对给定的时间戳进行一些计算)但我不知道把它放在哪里。
如果我把它们放在例如在“Services”中,迟早会变得混乱。
将它们放在不同的文件夹中(基于它们的功能)会更好。
请让我知道关于这个想法和我的想法的任何想法。我很想听听你的意见。
更新:最后的想法:将类直接放在命名空间文件夹“test”中会完全错误吗?
【问题讨论】:
-
关于配置服务,我建议使用工厂服务,它实际上为给定用户创建了一个具体的配置对象。例如。
$factory->createFor($accountId): Configuration。您甚至可以将其封装在服务容器中。 -
@Yoshi 非常感谢。我将看看使用工厂创建服务。