原书链接
本书是Symfony开发者的推荐的应用开发哲学。
Configuration
1、用.env文件,并为每个环境构建一个.env文件。
2、当有敏感信息的时候,比如API key,你可以将这些敏感信息存在Symfony's secrets management system.
3、对于应用程序参数,在config/services.yaml中,进行定义,你可以根据环境来覆盖这些配置,比如services_dev.yaml或者services_prod.yaml
4、应用程序参数用短和前缀的参数名,比如:
config/services.yaml parameters: # don't do this: 'dir' is too generic, and it doesn't convey any meaning app.dir: '...' # do this: short but easy to understand names app.contents_dir: '...'
5、用常量定义很少改变的选项
`
namespace App\Entity;
class Post
{
public const NUMBER_OF_ITEMS = 10;
// ...
}
`
6、不要创建任何Bundle来组织你的应用程序逻辑
如果你要复用一些项目中的特性,创建Bundle,否则,通过namespace来组织你的业务模块。
7、用自动装配(Autowiring)来构造应用程序服务(Service)
服务自动装配(Service autowiring)是一项功能,它通过读取您构造函数(或其他方法)中的类型提示(type-hints),自动将正确的服务传递给每个方法,从而无需显式配置服务,并简化应用程序的维护工作。
将其与服务自动配置(service autoconfiguration)结合使用,还可为需要特定标签的服务(如Twig扩展、事件订阅器等)自动添加相应的服务标签。
8、无论什么时候,Service都必须是私有的
声明Service是private,以避免在外部同get来访问该Service。你应该通过依赖注入(Dependency Injection)的方式来使用Service。
9、用yaml格式来配置你自己的Service
如果你使用默认的yaml文件来配置service,大多数的service可以自动配置。但在一些特殊情况下,你可能需要手工进行配置。
yaml格式是symfony推荐的配置格式,因为他对新来者友好并且精确。
10、用属性(Attributes)来定义Doctrine的实体(Entity)映射
Doctrine Entity是你将存在数据库里面的php 对象。Doctrine通过你配置的属性,来了解你的Entities。
Doctrine支持多种元数据格式,但是属性是迄今为止最方便、快捷的方式,来寻找你的映射信息。