如何使用最佳实践构建包
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
如何使用最佳实践构建包
一个包是一个目录,一个定义良好的结构和可以主机类控制器和网络资源。即使包是很灵活的,你应该遵循如果你想分发他们的一些最佳实践。
包的名字
包也是一个PHP名称空间。名称空间必须遵循的技术互操作性标准PHP 5.3命名空间和类名:它开始于一个供应商,其次是零个或多个类别细分,以短名称的名称空间,它必须结束包
后缀。
一个名称空间变成一个包当你添加一个包类。包类名称必须遵循这些简单的规则:
- 只使用字母数字字符和下划线;
- 使用一个CamelCased名称;
- 使用描述性和短名称(不超过2字);
- 前缀的名称与连接供应商(和可选的类别名称空间);
- 后缀的名字
包
。
这里有一些有效的包命名空间和类名:
名称空间 | 包类名 |
---|---|
Acme \包\ BlogBundle |
AcmeBlogBundle |
Acme \包\社会\ BlogBundle |
AcmeSocialBlogBundle |
Acme \ BlogBundle |
AcmeBlogBundle |
按照惯例,getName ()
包类的方法应该返回的类名。
请注意
如果你公开分享你的包,你必须使用包类名称的名称存储库(AcmeBlogBundle
而不是BlogBundle
例如)。
请注意
ob娱乐下载Symfony2核心包不包类前缀ob娱乐下载
而且总是添加一个包
sub-namespace;例如:FrameworkBundle。
每个包都有一个别名,它是小写字母的简短版的包名称使用下划线(acme_hello
为AcmeHelloBundle
,或acme_social_blog
为Acme \社会\ BlogBundle
例如)。这个别名用于执行一个包的独特性(见下面的一些用法示例)。
目录结构
的基本目录结构HelloBundle
包必须阅读如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
XXX /……HelloBundle / HelloBundle。php配置控制器/资源/元/许可证/ doc /索引。rst /视图/公共/测试/翻译
的XXX
目录(ies)反映了包的名称空间结构。
以下文件是必需的:
HelloBundle.php
;资源/元/许可证
:完整的许可代码;资源/ doc / index.rst
:包的根文件文档。欧宝官网下载app
请注意
这些约定确保自动化工具可以依靠这个默认结构工作。
子目录的深度应该保持最小的最常用类和文件在最高水平(2)。更多的水平可以定义非战略进程,文件。
包目录是只读的。如果你需要写临时文件,将它们存储在缓存/
或日志/
主机应用程序的目录。工具可以生成包中的文件目录结构,但前提是生成的文件将存储库的一部分。
下面的类和文件有特定的阵地:
类型 | 目录 |
---|---|
命令 | 命令/ |
控制器 | 控制器/ |
服务容器扩展 | DependencyInjection / |
事件监听器 | EventListener / |
配置 | 资源/ config / |
Web资源 | 资源/公共/ |
翻译文件 | 资源/翻译/ |
模板 | 资源/视图/ |
单元测试和功能测试 | 测试/ |
请注意
构建一个可重用的包时,应放置在模型类模型
名称空间。看到如何提供几个原则实现的模型类如何处理与编译器通过映射。
类
包目录结构作为名称空间的层次结构。例如,一个HelloController
控制器存储在包/ HelloBundle /控制器/ HelloController.php
完全限定类名包\ \ HelloController HelloBundle \控制器
。
所有类和文件必须遵循Symfony2编码ob娱乐下载标准。
一些类应被视为立面,应该尽可能短,像命令,帮手,侦听器,控制器。
类连接到事件分配器应该后缀为侦听器
。
应该存储在一个异常类异常
sub-namespace。
测试
包应该有一个测试套件用PHPUnit)和存储测试/
目录中。测试应该遵循以下原则:
- 测试套件必须与一个简单的可执行文件
phpunit)
命令从一个示例应用程序运行; - 功能测试应该只被用来测试响应输出和一些分析信息如果你有;
- 测试应该覆盖至少95%的代码库。
请注意
一个测试套件必须不包含AllTests.php
脚本,但是必须依靠的存在phpunit.xml.dist
文件。
欧宝官网下载app
所有的类和函数必须有完整的PHPDoc。
丰富的文档也应该提供欧宝官网下载app的reStructuredText下格式,资源/ doc /
目录;的资源/ doc / index.rst
文件是唯一的强制性文件,必须文档的入口点。欧宝官网下载app
安装说明
为了减轻第三方的安装包,在你考虑使用以下标准指令README.md
文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
安装= = = = = = = = = = = =步骤1:下载包- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -打开一个命令控制台,输入您的项目目录并执行以下命令来下载最新的稳定版本的包:“‘bash作曲家美元需要<包名称>“~ 1”“这个命令需要你安装了作曲家在全球范围内,为解释(安装章)(https://getcomposer.org/doc/00-intro.md)的作曲家文档。欧宝官网下载app第二步:使包- - - - - - - - - - - - - - - - - - - - - - - - -然后,使包通过添加以下行在app / AppKernel。php的文件您的项目:“php < ?php / / app / AppKernel。php / /……类AppKernel扩展内核{公共职能registerBundles(){$包=数组(/ /……新<供应商> \ < bundle-name > \ < bundle-long-name > ());/ /……}/ /……}’‘
这个模板假定你的包的1.倍
的版本。如果不是,改变“~ 1”
安装相应版本(“~ 2”
,“~ 3”
等)。
可选地,您可以添加更多的安装步骤(步骤3,步骤4等)来解释其他必需的安装任务,如登记线路或抛售资产。
路由
如果包提供的路线,他们必须以包为前缀的别名。AcmeBlogBundle例如,所有线路都必须前缀acme_blog_
。
模板
如果一个包提供了模板,他们必须使用树枝。一捆不能提供主要布局,除非它提供了一个完整的应用程序。
配置
提供更大的灵活性,一个包可以提供可配置的设置通过使用Symfony2内置的机制。ob娱乐下载
对于简单的配置设置,依赖于默认参数
条目的Symfony2配置ob娱乐下载。ob娱乐下载Symfony2参数简单的键/值对;价值是任何有效的PHP价值。每个参数的名字应该开始包别名,虽然这只是一个最佳实践建议。其余的参数名称将使用一段时间(。
)独立的不同部分(如。acme_hello.email.from
)。
最终用户可以提供值在任何配置文件:
1 2 3
# app / config / config.yml参数:acme_hello.email.from:fabien@example.com
1 2 3 4
< !——app / config / config。xml - - ><参数><参数关键=“acme_hello.email.from”>fabien@example.com< /参数>< /参数>
1 2
/ / app / config / config . php美元容器- >setParameter (“acme_hello.email.from”,“fabien@example.com”);
1 2 3
;应用程序/配置/ config.ini(参数)acme_hello.email.from= fabien@example.com
从容器中检索代码中配置参数:
1
美元容器- >getParameter (“acme_hello.email.from”);
即使这种机制很简单,你是高度鼓励使用语义配置中所描述的食谱。
请注意
如果你定义的服务,他们也应该与包别名前缀。