大局

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.8,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

大局

10分钟内开始使用Sym欧宝娱乐app下载地址fony !本章将向您介绍Symfony背后最重要的概念,并解释如何通过演示一个简单的项目来快速入门。欧宝娱乐app下载地址

如果你以前使用过web框架,你应该对Symfony感到很熟悉。欧宝娱乐app下载地址如果没有,欢迎使用一种全新的开发web应用程序的方式。

安装Symfony欧宝娱乐app下载地址

在继续阅读本章之前,请确保已经安装了PHP和Symfony欧宝娱乐app下载地址安装和设置Symfony框架欧宝娱乐app下载地址篇文章。

理解基本原理

框架的主要目标之一是保持代码的组织性,并通过避免在同一个脚本中混合数据库调用、HTML标记和其他PHP代码,使应用程序能够随着时间的推移而轻松地发展。要使用Symfony实现这一目标,首先需要学习一些基欧宝娱乐app下载地址本概念。

在开发Symfony应用程序时,作为欧宝娱乐app下载地址开发人员的责任是编写映射用户应用程序的代码请求(如。http://localhost:8000/)资源与之相关的(the主页HTML页面)。

要执行的代码定义为PHP类的方法。方法被调用行动还有课程控制器,但在实践中,大多数开发人员使用控制器指他们两个。方法定义用户请求和该代码之间的映射路由配置。浏览器中显示的内容通常使用模板

当你去http://localhost:8000/app/example, 欧宝娱乐app下载地址Symfony将执行控制器src / AppBundle /控制器/ DefaultController.php并渲染应用程序/资源/视图/ / index.html.twig违约模板。

在下面的小节中,您将详细了解Symfony控制器、路由和模板的内部工作原理。欧宝娱乐app下载地址

动作和控制器

打开src / AppBundle /控制器/ DefaultController.php文件,您将看到以下代码(现在,不要查看@Route配置,因为这将在下一节解释):

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
名称空间AppBundle控制器使用Sensio赞助FrameworkExtraBundle配置路线使用欧宝娱乐app下载地址FrameworkBundle控制器控制器DefaultController扩展控制器/ * * *@Route("/", name="首页")*/公共函数indexAction()返回->呈现(“违约/ index.html.twig”, (/ /……]);}}

在Sy欧宝娱乐app下载地址mfony应用程序中,控制器通常是PHP类,其名称以控制器词。在本例中,控制器被调用默认的PHP类被调用DefaultController

控制器中定义的方法被调用行动,它们通常与应用程序的一个URL相关联,并且它们的名称以行动.在本例中,默认的控制器只有一个被调用的动作指数定义在indexAction ()方法。

动作通常很短——大约10-15行代码——因为它们只调用应用程序的其他部分来获取或生成所需的信息,然后呈现一个模板向用户显示结果。

在本例中,指数Action实际上是空的,因为它不需要调用任何其他方法。该操作只是呈现一个模板,欢迎您使用Symfony。欧宝娱乐app下载地址

路由

欧宝娱乐app下载地址Symfony通过将请求的URL与应用程序配置的路径相匹配,将每个请求路由到处理它的操作。再次打开src / AppBundle /控制器/ DefaultController.php文件,并查看上面的三行代码indexAction ()方法:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/ / src / AppBundle /控制器/ DefaultController.php名称空间AppBundle控制器使用Sensio赞助FrameworkExtraBundle配置路线使用欧宝娱乐app下载地址FrameworkBundle控制器控制器DefaultController扩展控制器/ * * *@Route("/", name="首页")*/公共函数indexAction()返回->呈现(“违约/ index.html.twig”, (/ /……]);}}

属性定义了路由配置@Route ()注释。一个PHP注释是一种配置方法的方便方法,无需编写常规PHP代码。注意注释块以/**,而常规的PHP注释以/*

的第一个值@Route ()定义将触发动作执行的URL。因为你不必把你的应用程序的主机添加到URL(例如。http://example.com),这些url总是相对的,它们通常被调用路径.在这种情况下,/路径为应用程序主页。的第二个值@Route ()(如。name = "主页")是可选的,设置路由的名称。现在还不需要这个名称,但是以后在链接页面时它会很有用。

考虑到这一切,@Route (" / " name = "主页")注释创建一个名为主页这使得Symfony执行欧宝娱乐app下载地址指数的行动默认的控件时的/应用程序路径。

提示

除了PHP注释,路由还可以在YAML、XML或PHP文件中配置路由指南。这种灵活性是Symfony的主要特性之一,Symfony框架从不将特定的配置格式强加给您。欧宝娱乐app下载地址

模板

唯一的内容指数action是下面的PHP指令:

1 2 3
返回->呈现(“违约/ index.html.twig”, (/ /……]);

$ this - >渲染()方法是呈现模板的方便快捷方式。欧宝娱乐app下载地址Symfony为从基本Symfony扩展的任何控制器提供了一些有用的快捷方式控制器类。

默认情况下,应用模板保存在应用程序/资源/视图/目录中。因此,默认的/ index.html.twig模板对应于应用程序/资源/视图/ / index.html.twig违约.打开这个文件,你会看到下面的代码:

1 2 3 4 5 6 7 8
{# app /资源/视图/违约/ index . html。树枝#}{%扩展“base.html。嫩枝' %}{%身体%}<h1>欢迎来到Symfony欧宝娱乐app下载地址h1>{#……#}{%endblock%}

该模板是用嫩枝,一个为现代PHP应用程序创建的模板引擎。的本教程的第二部分解释了模板在Symfony中的工作原理。欧宝娱乐app下载地址

使用环境

现在您已经更好地理解了Symfony是如何工作的,下面仔细看看任何Symfony渲染页面的底部。欧宝娱乐app下载地址您应该注意到一个带有Symfony标志的小栏。欧宝娱乐app下载地址这就是“web调试工具栏”,它是Symfony开发人员最好的朋友!欧宝娱乐app下载地址

但你最初看到的只是冰山一角;点击任何一个栏部分打开分析器,获得更多关于请求、查询参数、安全细节和数据库查询的详细信息:

该工具提供了大量关于应用程序的内部信息,您可能会担心访问者访问合理的信息。欧宝娱乐app下载地址Symfony意识到了这个问题,因此,当您的应用程序在生产服务器上运行时,它不会显示这个栏。

Symfony如何欧宝娱乐app下载地址知道您的应用程序是在本地运行还是在生产服务器上运行?的概念,请继续阅读执行环境

什么是环境?

环境表示一组用于运行应用程序的配置。欧宝娱乐app下载地址Symfony默认定义了两个环境:dev(适合在本地开发应用程序)和刺激(针对在生产环境中执行应用程序进行了优化)。

当你参观http://localhost:8000URL,您将在欧宝娱乐app下载地址dev环境。来访问您的应用程序刺激环境,访问http://localhost:8000/app.phpURL。如果你喜欢总是展示dev环境中的URL,您可以访问http://localhost:8000/app_dev.phpURL。

环境之间的主要区别是dev被优化为向开发人员提供大量信息,这意味着更差的应用程序性能。与此同时,刺激已优化以获得最佳性能,这意味着禁用调试信息以及web调试工具栏。

环境之间的另一个区别是用于执行应用程序的配置选项。当您访问dev环境,Symfony加载欧宝娱乐app下载地址应用程序/配置/ config_dev.yml配置文件。当您访问刺激环境,Symfony加载欧宝娱乐app下载地址应用程序/配置/ config_prod.yml文件。

通常,环境共享大量配置选项。因为这个原因,你把公共构型放进去config.yml并在必要时覆盖每个环境的特定配置文件:

1 2 3 4 5 6 7
# app / config / config_dev.yml进口:-资源:config.ymlweb_profiler:工具栏:真正的intercept_redirects:

在本例中,config_dev.yml配置文件导入公共config.yml文件,然后用它自己的选项覆盖任何现有的web调试工具栏配置。

有关环境的详细信息,请参见“环境”部分的配置指南。

最终的想法

恭喜你!您已经初步了解了Symfony代码。欧宝娱乐app下载地址这并不难,对吧?还有很多需要探索的地方,但是您应该已经看到了Symfony如何使实现web站点变得更好更快。欧宝娱乐app下载地址如果您渴望了解更多关于Symfony的信息,请进入下一节:欧宝娱乐app下载地址视图".

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。