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 if 想到的些问题
Mar 22 PHP
优化PHP代码的53条建议
Mar 27 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 PHP
PHP页面静态化――纯静态与伪静态用法详解
Jun 05 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的面向对象编程
2006/10/09 PHP
测试php函数的方法
2013/11/13 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
小程序实现分类页
2019/07/12 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
Python实现telnet服务器的方法
2015/07/10 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
python模块之paramiko实例代码
2018/01/31 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
Python3解释器知识点总结
2019/02/19 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
Python中Yield的基本用法
2020/10/18 Python
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
读书心得体会
2013/12/28 职场文书
环保志愿者活动方案
2014/08/14 职场文书
信用卡工资证明范本
2014/10/17 职场文书
李白故里导游词
2015/02/12 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript