Symfony最好的实践

时间:2017-11-08 20:40:09

标签: php symfony

我使用的是symfony 3.3,我想知道这些案例的最佳做法是什么:

on render()用于显示模板

- folder:view.html.twig
- folder/view.html.twig
- @folder...

on getRepository()

- 'AppBundle:EntityName'
- Entityname::class

$resolver->setDefaults(array(
    'data_class' => EntityName::class
));

$resolver->setDefaults(array(
    'data_class' => 'AppBundle\Entity\EntityName'
));

在formtype上类似于entitytype

   ->add(
        'words',
        EntityType::class,
        array(
            'class'        => Word::class,
        )
    )

   ->add(
        'words',
        EntityType::class,
        array(
            'class'        => 'AppBundle\Entity\Word',
        )
    )

在控制器上操作()

newAction(EntityManagerInterface $em)

    public function newAction()
    {
        $em = $this->getDoctrine()->getManager();
    }

我已经阅读了symfony网站上的最佳做法,但我没有看到这些信息。

2 个答案:

答案 0 :(得分:1)

编辑15-nov-2017 :Symfony最佳做法已更新 - > https://symfony.com/doc/master/best_practices/index.html

使用普通路径(即folder/view.html.twig)或@来引用树枝模板。 doc说:

  

过去,Symfony使用不同的语法来引用模板。这种格式使用冒号(:)来分隔每个模板路径部分,它的一致性较差,性能比Twig语法差。

每次可能时使用::class表示法。它更自然,更易于维护,书写和阅读。

对于最后一个,它实际上取决于您的上下文,但IMO最好使用存储库类并避免直接在控制器中使用实体管理器。

关于控制器中的依赖注入,doc说:

  

通常,新的最佳实践是使用普通的构造函数依赖注入(或#34; action"在控制器中注入)而不是通过$ this-> get()获取公共服务(尽管仍然如此)工作)。

答案 1 :(得分:0)

“提取优于抽象”

这就是我选择的原因:

  • 运营商::定义的类名称,如EntityName :: class

  • 物理路径,例如Folder/view.html

  • 依赖注入,而不是Service locator模式或深度潜水的依赖。

例如:我可以依赖IDE来让我在绝对类名的定义中出错。我可以使用本机函数进行验证和路径转换。

泛化。我总是试图避免除了native之外的域依赖。

这是我的做法,它与伟大的Symfony无关。