2.4 輸出“Hello World”
2.4 輸出“Hello World”
首先,在新的應(yīng)用上編寫(xiě)一個(gè)“Hello World”程序來(lái)試用這個(gè)框架。“Hello World”程序在Yii中是一個(gè)簡(jiǎn)單的Web程序,它發(fā)送信息到瀏覽器。
一個(gè)典型Yii的Web應(yīng)用程序執(zhí)行流程從用戶通過(guò)瀏覽器輸入一個(gè)請(qǐng)求后開(kāi)始,Yii應(yīng)用程序首先解析該請(qǐng)求的信息,去查找一個(gè)對(duì)應(yīng)的控制器,然后調(diào)用該控制器內(nèi)的動(dòng)作方法。在該動(dòng)作方法中,可以渲染一個(gè)特定的視圖,然后將渲染后的內(nèi)容返回給用戶。如果需要處理數(shù)據(jù),那么控制器可以調(diào)用模型來(lái)處理創(chuàng)建、讀取、更新和刪除(CRUD)等數(shù)據(jù)庫(kù)操作。
本章中的這個(gè)“Hello World”示例,只需要一個(gè)控制器和視圖,不處理任何數(shù)據(jù),這樣將不需要模型。接下來(lái)讓我們開(kāi)始創(chuàng)建控制器。
創(chuàng)建一個(gè)新的控制器,PHP文件名是MessageController.php,并放到控制器目錄protected/controllers中。新創(chuàng)建的MessageController類(lèi)繼承應(yīng)用程序的基類(lèi)Controller,它的位置是protected/components/Controller.php。由于MessageController類(lèi)繼承了框架的基礎(chǔ)類(lèi)Ccontroller,因此,它繼承了Ccontroller類(lèi)默認(rèn)的所有行為。在MessageController類(lèi)中創(chuàng)建一個(gè)actionOutput()動(dòng)作方法。下面的代碼是MessageController類(lèi)的內(nèi)容。
- <?php
- class MessageController extends Controller
- {
- public function actionOutput()
- {
- $this->render('helloWorld');
- }
- }
視圖文件與控制器關(guān)聯(lián),默認(rèn)存放在protected/views/message下。編輯protected/views/ message/helloWorld.php,修改成如下代碼:
- <h1>Hello, World!</h1>
保存代碼,并訪問(wèn)http://hostname/dscms/index.php?r=message/output,頁(yè)面如圖2-12所示。
回顧一下運(yùn)行這個(gè)應(yīng)用程序時(shí)Yii框架是如何分析的,如圖2-13所示。
1.用戶發(fā)送了訪問(wèn)http://hostname/index.php?r=message/output的請(qǐng)求, Web 服務(wù)器通過(guò)執(zhí)行入口腳本index.php處理此請(qǐng)求。
2.入口腳本創(chuàng)建了一個(gè)應(yīng)用實(shí)例對(duì)象并執(zhí)行。
3.應(yīng)用實(shí)例對(duì)象分析這個(gè)URL,controllerID是message,它將告訴Yii應(yīng)該去請(qǐng)求MessageController.php文件,這個(gè)文件的位置是protected/controllers/MessageController.php。Yii還發(fā)現(xiàn),actionID指定的是output,因此,會(huì)調(diào)用MessageController類(lèi)中的actionOutput()操作方法。
4.a(chǎn)ctionOutput()方法會(huì)渲染helloworld.php視圖文件,這個(gè)文件的位置是protected/ views/message/helloworld.php。
5.動(dòng)作方法完成視圖渲染并將其返回給瀏覽器。
喜歡的朋友可以添加我們的微信賬號(hào):
51CTO讀書(shū)頻道二維碼
51CTO讀書(shū)頻道活動(dòng)討論群:365934973