Symfony2開(kāi)發(fā)之控制器用法實(shí)例分析
本文實(shí)例分析了Symfony2開(kāi)發(fā)之控制器用法。分享給大家供大家參考,具體如下:
控制器是PHP函數(shù),通過(guò)它,你可以根據(jù)HTTP請(qǐng)求創(chuàng)建任務(wù)信息,并且構(gòu)建和返回HTTP響應(yīng)。響應(yīng)可以是HTML頁(yè)面、XML文檔、序列化的JSON數(shù)組、圖片、重定向、404錯(cuò)誤甚至是你可以想到的一切。控制器中包含了你應(yīng)用程序需要?jiǎng)?chuàng)建響應(yīng)的抽象邏輯。
接收請(qǐng)求,返回響應(yīng)的基本生命周期
1、每個(gè)請(qǐng)求都被單個(gè)前端控制器(如app.php或index.php)文件處理,前端控制器負(fù)責(zé)引導(dǎo)框架;
2、路由查看并匹配請(qǐng)求信息,并將其指向一個(gè)特定的路由,該路由決定調(diào)用哪個(gè)控制器;
3、執(zhí)行控制器,控制器中的代碼將創(chuàng)建并返回一個(gè)Response對(duì)象;
4、HTTP頭和Response對(duì)象的內(nèi)容將發(fā)回客戶(hù)端。
雖然名稱(chēng)相似,但前端控制器與我們?cè)诒菊鹿?jié)所說(shuō)的控制器是不同的,前端控制器是你web目錄中的一個(gè)PHP小文件,所有的請(qǐng)求都直接經(jīng)過(guò)它。一個(gè)典型的應(yīng)用程序?qū)⒂幸粋€(gè)用于生產(chǎn)的前端控制器(如app.php)和一個(gè)用于開(kāi)發(fā)的前端控制器(如app_dev.php)。你可以永遠(yuǎn)不需要對(duì)前端控制器進(jìn)行編輯、查看和擔(dān)心。
編寫(xiě)一個(gè)簡(jiǎn)單的控制器
前面一篇《Symfony學(xué)習(xí)十分鐘入門(mén)經(jīng)典教程》已經(jīng)說(shuō)了如何創(chuàng)建Bundle現(xiàn)在直接說(shuō)怎樣添加控制器??刂破魇莍nfoAction方法,它隸屬于一個(gè)控制器類(lèi)(UserController)。不要對(duì)名稱(chēng)感到困惑:控制器類(lèi)只是簡(jiǎn)單將幾個(gè)控制器集中在一起的。通常情況下,控制器類(lèi)將放置多個(gè)控制器(如updateAction、deleteAction等)。
//Symfony2充分利用了PHP5.3的名稱(chēng)空間的功能去為整個(gè)控制器類(lèi)命名空間
namespace ZM\ApiBundle\Controller;
//use關(guān)鍵字導(dǎo)入類(lèi),是控制器必須返回的
//出于方便的考慮,Symfony2提供了一個(gè)Controller基類(lèi),以幫助實(shí)現(xiàn)常用的一些控制器任務(wù),你的控制器類(lèi)能夠訪(fǎng)問(wèn)所需的資源。通過(guò)繼承該類(lèi),你可以利用其中的一些方法。
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
class UserController extends Controller {
/**
* 用戶(hù)個(gè)人中心查看
* @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));
//控制器創(chuàng)建并返回一個(gè)Response對(duì)象
return new Response(json_encode($result), '200', array('Content-Type' => 'application/json'));
}
}
本文永久地址:http://blog.it985.com/5916.html
本文出自 IT985博客 ,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。
更多關(guān)于PHP框架相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php優(yōu)秀開(kāi)發(fā)框架總結(jié)》,《codeigniter入門(mén)教程》,《CI(CodeIgniter)框架進(jìn)階教程》,《Yii框架入門(mén)及常用技巧總結(jié)》及《ThinkPHP入門(mén)教程》
希望本文所述對(duì)大家基于Symfony框架的PHP程序設(shè)計(jì)有所幫助。
- Symfony2使用Doctrine進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)方法實(shí)例總結(jié)
- Symfony2實(shí)現(xiàn)從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)的方法小結(jié)
- Symfony2創(chuàng)建頁(yè)面實(shí)例詳解
- Symfony2之session與cookie用法小結(jié)
- Symfony2框架學(xué)習(xí)筆記之表單用法詳解
- Symfony2框架創(chuàng)建項(xiàng)目與模板設(shè)置實(shí)例詳解
- Symfony2學(xué)習(xí)筆記之插件格式分析
- Symfony2學(xué)習(xí)筆記之系統(tǒng)路由詳解
- Symfony2學(xué)習(xí)筆記之控制器用法詳解
- Symfony2學(xué)習(xí)筆記之模板用法詳解
- Symfony2安裝第三方Bundles實(shí)例詳解
- Symfony2使用第三方庫(kù)Upload制作圖片上傳實(shí)例詳解
- Symfony2聯(lián)合查詢(xún)實(shí)現(xiàn)方法
相關(guān)文章
laravel 表單驗(yàn)證實(shí)現(xiàn)多個(gè)字段組合后唯一
這篇文章主要介紹了laravel 表單驗(yàn)證實(shí)現(xiàn)多個(gè)字段組合后唯一,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
PHP超全局?jǐn)?shù)組(Superglobals)介紹
這篇文章主要介紹了PHP超全局?jǐn)?shù)組(Superglobals)介紹,本文講解了概述、變量的作用域、超全局?jǐn)?shù)組及注意事項(xiàng)等內(nèi)容,需要的朋友可以參考下2015-07-07
Laravel 5.1 框架Blade模板引擎用法實(shí)例分析
這篇文章主要介紹了Laravel 5.1 框架Blade模板引擎用法,結(jié)合實(shí)例形式分析了laravel5.1框架Blade模板引擎基本功能、創(chuàng)建、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-01-01
PHP網(wǎng)頁(yè)游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(十五)
這篇文章主要介紹了PHP網(wǎng)頁(yè)游戲Xnova(ogame)源碼解讀的艦隊(duì)活動(dòng)頁(yè)面處理流程,需要的朋友可以參考下2014-06-06

