Symfony2开发之控制器用法实例分析


Posted in PHP onFebruary 05, 2016

本文实例分析了Symfony2开发之控制器用法。分享给大家供大家参考,具体如下:

控制器是PHP函数,通过它,你可以根据HTTP请求创建任务信息,并且构建和返回HTTP响应。响应可以是HTML页面、XML文档、序列化的JSON数组、图片、重定向、404错误甚至是你可以想到的一切。控制器中包含了你应用程序需要创建响应的抽象逻辑。

接收请求,返回响应的基本生命周期

1、每个请求都被单个前端控制器(如app.php或index.php)文件处理,前端控制器负责引导框架;
2、路由查看并匹配请求信息,并将其指向一个特定的路由,该路由决定调用哪个控制器;
3、执行控制器,控制器中的代码将创建并返回一个Response对象;
4、HTTP头和Response对象的内容将发回客户端。

虽然名称相似,但前端控制器与我们在本章节所说的控制器是不同的,前端控制器是你web目录中的一个PHP小文件,所有的请求都直接经过它。一个典型的应用程序将有一个用于生产的前端控制器(如app.php)和一个用于开发的前端控制器(如app_dev.php)。你可以永远不需要对前端控制器进行编辑、查看和担心。

编写一个简单的控制器

前面一篇《Symfony学习十分钟入门经典教程》已经说了如何创建Bundle现在直接说怎样添加控制器。控制器是infoAction方法,它隶属于一个控制器类(UserController)。不要对名称感到困惑:控制器类只是简单将几个控制器集中在一起的。通常情况下,控制器类将放置多个控制器(如updateAction、deleteAction等)。

//Symfony2充分利用了PHP5.3的名称空间的功能去为整个控制器类命名空间
namespace ZM\ApiBundle\Controller;
//use关键字导入类,是控制器必须返回的
//出于方便的考虑,Symfony2提供了一个Controller基类,以帮助实现常用的一些控制器任务,你的控制器类能够访问所需的资源。通过继承该类,你可以利用其中的一些方法。
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
class UserController extends Controller {
  /**
   * 用户个人中心查看
   * @return Response
   */
  public function infoAction() {
    $conn = $this->getDoctrine()->getConnection();
    $request = Request::createFromGlobals()->request;
    $phone = $request->get('phone');
    $result = $conn->fetchAssoc("SELECT * FROM user WHERE phone = ? LIMIT 1", array($phone));
    //控制器创建并返回一个Response对象
    return new Response(json_encode($result), '200', array('Content-Type' => 'application/json'));
  }
}

本文永久地址:http://blog.it985.com/5916.html
本文出自 IT985博客 ,转载时请注明出处及相应链接。

希望本文所述对大家基于Symfony框架的PHP程序设计有所帮助。

PHP 相关文章推荐
学习使用PHP数组
Oct 09 PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
PHP反向代理类代码
Aug 15 PHP
php的dl函数用法实例
Nov 06 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
PHP-X系列教程之内置函数的使用示例
Oct 16 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 #PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 #PHP
twig模板获取全局变量的方法
Feb 05 #PHP
twig里使用js变量的方法
Feb 05 #PHP
Symfony2安装第三方Bundles实例详解
Feb 04 #PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 #PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 #PHP
You might like
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
浅谈php7的重大新特性
2015/10/23 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
查看django版本的方法分享
2018/05/14 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
python中如何进行连乘计算
2020/05/28 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
python爬虫要用到的库总结
2020/07/28 Python
Python中Yield的基本用法
2020/10/18 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
2019年员工晋升管理制度范本!
2019/07/08 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书