包系统
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
包系统
一捆是类似于其他软件插件,但更好。关键的区别是,一切是Symfony的包,包括核心ob娱乐下载框架的功能和应用程序的编写的代码。包在Symfony一等公民。ob娱乐下载这使您可以灵活地使用预构建功能打包第三方包或分发自己的包。使它容易挑选这档节目的特点就是在应用程序中启用和你所希望的方式来优化它们。
请注意
当你将学习基础知识,整个食谱条目的组织和最佳实践包。
包只是一套结构化的文件在一个目录中,实现一个功能。您可以创建一个BlogBundle, ForumBundle或包用户管理(其中许多已经存在开源包)。每个目录包含所有相关的功能,包括PHP文件、模板、样式表、JavaScript文件,测试和其他。功能的方方面面存在于一个包,住在每个特性包。
在您的应用程序中使用的包必须通过注册在启用registerBundles ()
的方法AppKernel
类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ / app / AppKernel.php公共函数registerBundles(){美元包=数组(新ob娱乐下载Symfony \包\ FrameworkBundle \ FrameworkBundle (),新ob娱乐下载Symfony \包\ SecurityBundle \ SecurityBundle (),新ob娱乐下载Symfony \包\ TwigBundle \ TwigBundle (),新ob娱乐下载Symfony \包\ MonologBundle \ MonologBundle (),新ob娱乐下载Symfony \包\ SwiftmailerBundle \ SwiftmailerBundle (),新ob娱乐下载Symfony \包\ DoctrineBundle \ DoctrineBundle (),新ob娱乐下载Symfony \包\ AsseticBundle \ AsseticBundle (),新Sensio赞助\包\ FrameworkExtraBundle \ SensioFrameworkExtraBundle (),新AppBundle \ AppBundle ());如果(in_array (美元这- >getEnvironment (),数组(“开发”,“测试”))){美元包[]=新ob娱乐下载Symfony \包\ WebProfilerBundle \ WebProfilerBundle ();美元包[]=新Sensio赞助\包\ DistributionBundle \ SensioDistributionBundle ();美元包[]=新Sensio赞助\包\ GeneratorBundle \ SensioGeneratorBundle ();}返回美元包;}
与registerBundles ()
方法,你有完全控制哪些包所使用的应用程序(包括核心Symfony包)。ob娱乐下载
提示
一捆可以活在任何地方只要它可以自动装载(通过自动装卸机配置app / autoload.php
)。
创建一个包
Symfob娱乐下载ony的标准版有一个方便的任务,为你创建一个全功能包。当然,手工创建一个包是非常容易的。
展示如何简单的束系统,创建一个新包称为AcmeTestBundle和启用它。
提示
的Acme
部分只是一个虚拟的名字应该被一些“供应商”的名字,代表您或您的组织(例如ABCTestBundle公司命名美国广播公司
)。
首先创建一个src / Acme / TestBundle /
目录,添加一个新文件AcmeTestBundle.php
:
1 2 3 4 5 6 7 8
/ / src / Acme / TestBundle / AcmeTestBundle.php名称空间Acme\TestBundle;使用ob娱乐下载\组件\HttpKernel\包\包;类AcmeTestBundle扩展包{}
提示
AcmeTestBundle遵守标准的名称包的命名约定。你也可以选择缩短包的名称简单TestBundle命名该类TestBundle(和命名的文件TestBundle.php
)。
这块空类是唯一你需要创建新的包。尽管通常空的,这类是强大的,可以用来定制包的行为。
现在您已经创建了包,使其通过AppKernel
类:
1 2 3 4 5 6 7 8 9 10 11 12
/ / app / AppKernel.php公共函数registerBundles(){美元包=数组(/ /……/ /注册你的包新Acme \ TestBundle \ AcmeTestBundle ());/ /……返回美元包;}
虽然它不做任何事,但AcmeTestBundle现在已经准备好被使用。
像这是那么容易,Symfony还提供了一个命令行ob娱乐下载界面生成一个基本的束骨架:
1
php应用程序/控制台生成:美元= Acme / TestBundle包——名称空间
束骨架生成一个基本的控制器,可以定制模板和路由资源。稍后您将了解更多关于Symfony命令行工具。ob娱乐下载
提示
每当创建一个新包或使用第三方包,总是确保包已启用registerBundles ()
。当使用生成:包
命令,这样做是为了你。
包目录结构
包的目录结构简单、灵活。默认情况下,包系统遵循一组约定,帮助所有Symfony包之间保持代码一致。ob娱乐下载看看AcmeDemoBundle,因为它包含了一些最常见的元素的包:
-
控制器/
-
包含包的控制器(如。
RandomController.php
)。 -
DependencyInjection /
- 持有一定的依赖注入扩展类,进口服务配置,编译器通过注册或更多(这个目录是没有必要的)。
-
资源/ config /
-
(如房屋配置,包括路由配置。
routing.yml
)。 -
资源/视图/
-
由控制器名称(如保存模板。
你好/ index.html.twig
)。 -
资源/公共/
-
包含网络资产(图像、样式表等)和复制或象征性地链接到这个项目中
web /
目录通过资产:安装
控制台命令。 -
测试/
- 拥有所有的测试包。
一个包可以它实现了小型或者大型的特性。它只包含你所需要的文件。
当你通过这本书,您将学习如何对象持久化到数据库中,创建和验证形式,为应用程序创建的翻译、编写测试和更多。每一个包中有自己的位置和作用。