Symfony2框架的工作原理
jopen
9年前
从Requests(请求)链接开始,根据 不同的请求调用前台的controller(控制器),由controller调用系统核心功能对请求的URI资源进行Routing(路由)解析,再根 据解析的结果调用不同action函数,生成Responses(响应数据)并返回。
其中,不同的链接都对应不同的controller,系统是如何判断的呢?
不同的链接就必须在app/config/routing.yml文件中进行配置,例如要添加/contact链接(通过index.php/contact访问),配置如下:
contact:
path: /contact
defaults: { _controller: AcmeDemoBundle:Main:contact }
该配置的意思是当用户请求index.php/contact,路由系统根据配置执行MainController类的contactAction函数
MainController类部署如下:
//src/Acme/DemoBundle/Controller/MainController.php
use Symfony\Component\HttpFoundation\Response;
class MainController
{
public function contactAction()
{
//do something 实现功能,这里返回一个带h1标签的"Contact us!"输出
return new Response('<h1>Contact us!</h1>');
}}
标准组件
Symfony框架允许我们自由地创建自己的应用程序,并且大量的内置工具来协助完成各种各样的任务(如持久化数据库,渲染视图,发送邮件,处理提交数据,验证用户输入,安全处理)
Symfony本身包含超过了20个核心的相对独立组件,每个组件实现不同的功能:
HttpFoundation(HTTP处理):其中包含request类和response类,主要处理HTTP的请求和响应;session处理;Cookie处理;上传文件等
Routing(路由处理):解析URI资源,根据分析的结果执行操作
HttpFoundation(HTTP处理):,其中包含request类和response类,主要处理HTTP的请求和响应;session处理;Cookie处理;上传文件等
Form(表单处理):Symfony提供Forms组件帮助我们快速创建表单,以及处理表单提交的任务
Validator(HTTP处理):定义验证规则,验证用户提交的数据
ClassLoader(类加载):自动加载,让开发者不通过require方式包含文件即可调用指定的类
Templating(模板):可将获取的数据渲染到html模板中,实现逻辑与展示分离
Security(处理安全性问题)
Translation(语言翻译):实现多语言的功能