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 相关文章推荐
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
一个用于网络的工具函数库
Oct 09 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
PHP中的Memcache详解
Apr 05 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
Mar 03 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
php计算一个文件大小的方法
Mar 30 PHP
PHP实现GIF图片验证码
Nov 04 PHP
php利用gd库为图片添加水印
Nov 09 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 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
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
Jquery 的扩展方法总结
2011/10/01 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
jsonp原理及使用
2013/10/28 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
python实现简单中文词频统计示例
2017/11/08 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
石油大学毕业生自荐信
2014/01/28 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
争先创优公开承诺书
2014/08/30 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
介绍信样本
2015/01/31 职场文书
基层工作经历证明
2015/06/19 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL