大局

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

大局

10分钟内开始使用Symob娱乐下载fony2 !本章将带您了解Symfony2背后的一些最重要的概念,并解释如何通过向您展示一个简单的项目来快速入门。ob娱乐下载

如果你以前使用过web框架,你应该对Symfony2感到很熟悉。ob娱乐下载如果没有,欢迎使用全新的开发web应用程序的方法!

提示

想知道为什么以及何时需要使用框架吗?阅读“Symfony ob娱乐下载in 5 minutes _”文档。

下载Symfony2ob娱乐下载

首先,检查您是否已经安装和配置了使用PHP 5.3.2或更高版本的Web服务器(如Apache)。

提示

如果你有PHP 5.4,你可以使用内置的web服务器。内置服务器应该仅用于开发目的,但它可以帮助您快速轻松地启动项目。

只需使用这个命令启动服务器:

1
$ php -S localhost:80 -t /path/to/www

其中“/path/to/www”是到您机器上某个目录的路径,您将将Symfony提取到该目录中,以便最终到应用程序的URL为ob娱乐下载http://localhost/ob娱乐下载Symfony/app_dev.php”。您也可以先解压Symfony,然后在Symob娱乐下载fony“web”目录下启动web服务器。如果这样做,应用程序的URL将是“http://localhost/app_dev.php”。

准备好了吗?首先下载“Symfony2标准版_”,一个Symfonob娱乐下载y分布为最常见的用例进行了预配置,还包含一些演示如何使用Symfony2的代码(使用ob娱乐下载供应商包括让你更快上手)。

在您的web服务器根目录下解压存档后,您应该有一个ob娱乐下载Symfony /目录是这样的:

12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
www /

请注意

如果你下载了标准版没有供应商,只需运行以下命令下载所有供应商库:

1
$ PHP bin/vendor install

检查配置结果

ob娱乐下载Symfony2附带了一个可视化的服务器配置测试器,以帮助避免Web服务器或PHP错误配置带来的一些令人头痛的问题。使用下面的URL查看您的机器的诊断:

1
http://localhost/ob娱乐下载Symfony/web/config.php

请注意

所有示例url都假设您已经下载并解压缩ob娱乐下载直接进入web服务器的web根目录。如果你已经按照上面的说明做了,然后添加/ob娱乐下载 Symfony /网络本地主机为你看到的所有url:

1
http://localhost/ob娱乐下载Symfony/web/config.php

为了获得漂亮和简短的url,你应该将你的web服务器或虚拟主机的文档根指向ob娱乐下载Symfony / web /目录中。在这种情况下,您的url将看起来像http://localhost/config.phphttp://site.local/config.php,如果您为本地域创建了一个虚拟主机,例如,site.local

如果有任何未解决的问题,改正它们。您还可以通过遵循任何给定的建议来调整您的配置。当一切正常时,点击“绕过配置,进入“欢迎”界面,请求您的第一个“真正的”Symfony2网页:ob娱乐下载

1
http://localhost/ob娱乐下载Symfony/web/app_dev.php/

ob娱乐下载Symfony2应该欢迎并祝贺您迄今为止的辛勤工作!

理解基本原理

框架的主要目标之一是确保分离关注点.这使您的代码保持有序,并通过避免在同一个脚本中混合数据库调用、HTML标记和业务逻辑,使您的应用程序可以随着时间的推移轻松地发展。要使用Symfony实现这一目标,首先需要学习一些基ob娱乐下载本概念和术语。

提示

想要证明使用框架比在同一个脚本中混合所有内容更好吗?阅读“ob娱乐下载Symfony2 vs . Flat PHP书中的一章。

发行版附带了一些示例代码,您可以使用它们来了解更多关于Symfony2主要概念的信息。ob娱乐下载转到下面的URL,由Symfony2(替换ob娱乐下载法比安用你的名字):

1
http://localhost/ob娱乐下载Symfony/web/app_dev.php/demo/hello/Fabien

这是怎么回事?让我们来分析一下这个URL:

  • app_dev.php:这是一个前端控制器.它是应用程序的唯一入口点,它响应所有用户的请求;
  • /演示/ hello /法比安:这是虚拟路径用户想要访问的资源。

作为开发人员,您的职责是编写映射用户的代码请求/演示/ hello /法比安)资源与之相关的(the法比你好!HTML页面)。

路由

ob娱乐下载Symfony2通过尝试根据某些配置模式匹配所请求的URL,将请求路由到处理它的代码。缺省情况下,这些模式(称为路由)定义在应用程序/配置/ routing.yml配置文件。当你在dev环境-由app_dev.php前控制器-应用程序/配置/ routing_dev.yml同时加载配置文件。在标准版中,这些“演示”页面的路由被放置在该文件中:

1 2 3 4 5 6 7 8 9 10 11
# app / config / routing_dev.yml_welcome:模式:/默认值:_controller:AcmeDemoBundle:欢迎:索引_demo:资源:“@AcmeDemoBundle /控制器/ DemoController.php”类型:注释前缀:/演示#……

前三行(在注释之后)定义了当用户请求“/资源(即你之前看到的欢迎页面)。如有要求,AcmeDemoBundle:欢迎:索引控制器将被执行。在下一节中,您将了解这是什么意思。

提示

Symfob娱乐下载ony2标准版使用YAML但是Symfony2本身也支持XML、PHP和注释。ob娱乐下载不同的格式是兼容的,并且可以在应用程序中互换使用。此外,应用程序的性能并不依赖于所选择的配置格式,因为所有内容都缓存在第一个请求上。

控制器

控制器是处理传入信息的PHP函数或方法的花哨名称请求并返回反应(通常是HTML代码)。而不是使用PHP全局变量和函数(如$ _GET头())来管理这些HTTP消息,Symfony使用对象:ob娱乐下载请求而且响应.最简单的控制器可能会根据请求手工创建响应:

1 2 3 4 5
使用ob娱乐下载组件HttpFoundation响应的名字请求->查询->get (“名字”);返回响应(“你好”的名字200数组“内容类型”= >“文本/普通”));

请注意

ob娱乐下载Symfony2包含HTTP规范,HTTP规范是管理Web上所有通信的规则。阅读“ob娱乐下载Symfony2和HTTP基础这本书的一章,以了解更多关于这一点以及它带来的额外力量。

ob娱乐下载Symfony2根据_controller来自路由配置的值:AcmeDemoBundle:欢迎:索引.这个字符串是控制器逻辑名,它引用indexAction方法。Acme \ DemoBundle \ \ WelcomeController控制器类:

12 3 4 5 6 7 8 9 10 11 12
/ / src / Acme / DemoBundle /控制器/ WelcomeController.php名称空间AcmeDemoBundle控制器使用ob娱乐下载FrameworkBundle控制器控制器WelcomeController扩展控制器公共函数indexAction()返回->呈现(“AcmeDemoBundle:欢迎:index.html.twig”);}}

提示

您可以使用完整的类名和方法名-Acme \ DemoBundle \控制器\ WelcomeController: indexAction-用于_controller价值。但是如果您遵循一些简单的约定,逻辑名称就会更短,并且具有更大的灵活性。

WelcomeController类扩展了内置的控制器类,它提供了有用的快捷方法,如呈现()方法,该方法加载并呈现模板(AcmeDemoBundle:欢迎:index.html.twig).返回值是用呈现的内容填充的Response对象。因此,如果需要,响应可以在发送到浏览器之前进行调整:

1 2 3 4 5 6 7
公共函数indexAction()响应->呈现(“AcmeDemoBundle:欢迎:index.txt.twig”);响应->->集(“内容类型”“文本/普通”);返回响应;}

不管你怎么做,控制器的最终目标总是返回响应对象,该对象应返回给用户。这响应对象可以使用HTML代码填充,表示客户端重定向,甚至可以使用内容类型头的图像/ jpg

提示

扩展控制器基类是可选的。事实上,控制器可以是一个普通的PHP函数,甚至可以是一个PHP闭包。”控制器的章节告诉你关于Symfony2控制器的一切。ob娱乐下载

模板名称,AcmeDemoBundle:欢迎:index.html.twig,为模板逻辑名它引用了资源/视图/ / index.html.twig表示欢迎文件内的AcmeDemoBundle(位于src / Acme / DemoBundle).下面的bundles部分将解释为什么这是有用的。

现在,再次查看路由配置并找到_demo关键:

1 2 3 4 5
# app / config / routing_dev.yml_demo:资源:“@AcmeDemoBundle /控制器/ DemoController.php”类型:注释前缀:/演示

ob娱乐下载Symfony2可以从不同的文件中读取/导入路由信息,这些文件是用YAML、XML、PHP编写的,甚至是嵌入在PHP注释中的。这里,文件是逻辑名@AcmeDemoBundle /控制器/ DemoController.php和指的是src / Acme / DemoBundle /控制器/ DemoController.php文件。在这个文件中,路由被定义为动作方法的注释:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src / Acme / DemoBundle /控制器/ DemoController.php使用Sensio赞助FrameworkExtraBundle配置路线使用Sensio赞助FrameworkExtraBundle配置模板DemoController扩展控制器/ * * *@Route("/hello/{name}", name="_demo_hello") *@Template() * /公共函数helloAction的名字返回数组“名字”= >的名字);}/ /……

@Route ()注释定义了一个模式为的新路由/ hello /{名称}执行helloAction方法。用大括号括起来的字符串{名称}称为占位符。可以看到,它的值可以通过美元的名字方法参数。

请注意

即使PHP本身不支持注释,您也可以在Symfony2中广泛使用它们作为配置框架行为并将配置保存在代码旁边的方便方式。ob娱乐下载

如果您仔细观察控制器代码,您会发现它不是呈现模板并返回响应对象,它只返回一个参数数组。的@Template ()注释告诉Symfony为您呈现模板ob娱乐下载,将数组的每个变量传递给模板。所呈现的模板的名称紧跟在控制器的名称之后。在这个例子中AcmeDemoBundle:演示:hello.html.twig模板被呈现(位于src / Acme / DemoBundle /资源/视图/演示/ hello.html.twig).

提示

@Route ()而且@Template ()注释比本教程中展示的简单示例更强大。在官方文档中了解更多关于“'控制器中的注释' _”的信息。欧宝官网下载app

模板

控制器呈现src / Acme / DemoBundle /资源/视图/演示/ hello.html.twig模板(或AcmeDemoBundle:演示:hello.html.twig如果你使用逻辑名):

1 2 3 4 5 6 7 8
{# src / Acme / DemoBundle /资源/视图/演示/ hello.html。树枝#}{%扩展“AcmeDemoBundle:: layout.html。树枝“%}{%title“Hello”~ name %}{%内容%}<h1>你好{{name}}h1>{%endblock%}

默认情况下,Symfonob娱乐下载y2使用嫩枝作为模板引擎,但如果你愿意,你也可以使用传统的PHP模板。下一章将介绍模板在Symfony2中的工作方式。ob娱乐下载

你可能想知道为什么到目前为止,你看到的许多名字中都使用了Word。为应用程序编写的所有代码都以包的形式组织。在Syob娱乐下载mfony2中,包是一组结构化的文件(PHP文件、样式表、JavaScripts、图像……),它实现了一个单一功能(博客、论坛……),并且可以很容易地与其他开发人员共享。到目前为止,你只操纵了一捆,AcmeDemoBundle.您将在本教程的最后一章了解更多关于捆绑包的知识。

使用环境

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

但你最初看到的只是冰山一角;单击长十六进制数(会话令牌),显示另一个非常有用的Symfony2调试工具:分析器。ob娱乐下载

当然,在将应用程序部署到生产环境时,您不希望显示这些工具。这就是为什么你会发现另一个前控制器在web /目录(app.php),以优化生产环境。的AcmeDemoBundle通常只在开发环境中可用(参见下面的说明),但如果您要将其添加到生产环境,您可以在这里:

1
http://localhost/ob娱乐下载Symfony/web/app.php/demo/hello/Fabien

如果你使用Apachemod_rewrite启用时,您甚至可以省略app.phpURL的一部分:

1
http://localhost/ob娱乐下载Symfony/web/demo/hello/Fabien

最后但并非最不重要的是,在生产服务器上,您应该将web根目录指向web /目录来保护你的安装,并有一个更好看的URL:

1
http://localhost/demo/hello/Fabien

请注意

请注意,上面的三个url在这里仅作为例子当使用生产前端控制器时(有或没有mod_rewrite) URL看起来是什么样的。如果你在一个开箱即用的安装中尝试它们ob娱乐下载Symfony标准版您将得到一个404错误AcmeDemoBundle仅在开发环境中启用,并在应用程序/配置/ routing_dev.yml

为了使应用程序响应更快,Symfony2在ob娱乐下载应用程序/缓存/目录中。在开发环境中(app_dev.php),当您更改任何代码或配置时,此缓存将自动刷新。但在生产环境中并非如此(app.php),表现是关键。这就是为什么在开发应用程序时应该始终使用开发环境的原因。

不同的环境给定应用程序的不同之处在于它们的配置。事实上,一个配置可以从另一个配置继承:

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

dev环境(它加载config_dev.yml配置文件)导入全局config.yml文件,然后通过启用web调试工具栏(在本例中)对其进行修改。

最终的想法

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

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