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 相关文章推荐
require(),include(),require_once()和include_once()区别
Mar 27 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
PHP微框架Dispatch简介
Jun 12 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
PHP实现重载的常用方法实例详解
Oct 18 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
phpfpm的作用和用法
2019/10/10 PHP
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
Python复制文件操作实例详解
2015/11/10 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
2016春季幼儿园开学寄语
2015/12/03 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书