與許多開(kāi)發(fā)框架一樣,F(xiàn)leaPHP 通常也使用一個(gè)入口文件來(lái)啟動(dòng)框架,并運(yùn)行應(yīng)用程序代碼。雖然 FleaPHP 并不要求應(yīng)用程序必須使用單一的入口文件,不過(guò)在本系列文章中,我大部分時(shí)間都使用單一入口文件。
單一入口應(yīng)用程序
在 FleaPHP 應(yīng)用程序使用 MVC 模式時(shí),應(yīng)用程序的所有功能都通過(guò)一個(gè)單一的文件來(lái)調(diào)用。這種通過(guò)單一文件來(lái)執(zhí)行所有功能的應(yīng)用程序,稱為單一入口應(yīng)用程序。有關(guān)單一入口應(yīng)用程序的一些信息,可以參考 ChinaUnix 上的一篇帖子 。
許多著名的 PHP 應(yīng)用程序都是單一入口,例如 Drupal、WordPress、XOOPS、Mambo 等。當(dāng)然也有 phpMyAdmin 這樣的非單一入口應(yīng)用程序。
創(chuàng)建入口文件
現(xiàn)在,我們來(lái)創(chuàng)建一個(gè)最簡(jiǎn)單的入口文件。打開(kāi)文本編輯器,創(chuàng)建 htdocs/index.php 文件,內(nèi)容如下:
<?php </span>
require
(
'FLEA/FLEA.php'
);run();
?>
現(xiàn)在啟動(dòng)瀏覽器,輸入地址: http://localhost/index.php ,應(yīng)該就可以看到如下的畫面:
這個(gè)畫面顯示了一個(gè)錯(cuò)誤信息,但是也表明 index.php 中的兩行代碼已經(jīng)成功啟動(dòng)了 FleaPHP 框架。
實(shí)現(xiàn)我們的第一個(gè)控制器
在 FleaPHP 應(yīng)用程序中,應(yīng)用程序包含多個(gè)控制器。每一個(gè)控制器又提供一組控制器動(dòng)作(后文及本系列文章中都簡(jiǎn)稱為“動(dòng)作”)。每一個(gè)瀏覽器發(fā)送給 FleaPHP 應(yīng)用程序的請(qǐng)求,都是由一個(gè)動(dòng)作來(lái)處理的。將一組相關(guān)的動(dòng)作集中到一起,就形成了一個(gè)控制器。
現(xiàn)在我們來(lái)實(shí)現(xiàn)第一個(gè)控制器:
創(chuàng)建 htdocs/APP/Controller 目錄,并創(chuàng)建文件 htdocs/APP/Controller/Default.php (注意嚴(yán)格匹配目錄名和文件名的大小寫),內(nèi)容如下:
<?php </span>
class
Controller_Default{
function
actionIndex() {
echo
"My first controller."
; }}
?>
同時(shí)修改 index.php 入口文件,內(nèi)容改為:
<?php </span>
require
(
'FLEA/FLEA.php'
);import(
dirname
(__FILE__) .
'/APP'
);run();
?>
現(xiàn)在切換到瀏覽器,點(diǎn)擊“刷新”按鈕,可以看到 Default.php 文件中的 actionIndex 方法正確執(zhí)行了。
從剛剛這個(gè)例子可以看到,每一個(gè)控制器實(shí)際上就是一個(gè)類,而一個(gè)動(dòng)作則是該類的一個(gè)方法。
添加更多的動(dòng)作
現(xiàn)在我們?yōu)檫@個(gè)控制器添加更多的 Action 方法:
<?php </span>
class
Controller_Default{
function
actionIndex() {
echo
"My first controller."
; }
function
actionSay() {
echo
"Oh, FleaPHP great!"
; }}
?>
切換到瀏覽器,將瀏覽地址從 http://localhost/index.php 改為 http://localhost/index.php?action=say 并按回車鍵??梢钥吹捷敵鰞?nèi)容改變了。
由此可見(jiàn),action 參數(shù)的值決定了要調(diào)用控制器中的哪一個(gè)動(dòng)作方法。在上面的例子中,action=say 時(shí),調(diào)用的動(dòng)作方法為 actionSay。因?yàn)?FleaPHP 默認(rèn)要求每一個(gè)動(dòng)作方法必須加上前綴 action。如果不提供 action 參數(shù),則名為 index 的動(dòng)作方法 actionIndex() 會(huì)被調(diào)用。
實(shí)現(xiàn)更多的控制器
創(chuàng)建新文件 htdocs/APP/Controller/Book.php,并輸入內(nèi)容:
<?php </span>
class
Controller_Book{
function
actionIndex() {
echo
"Book controller default action."
; }
function
actionSayTitle() {
echo
h(
">"
); }}
?>
現(xiàn)在切換到瀏覽器,輸入地址 http://localhost/index.php?controller=Book&action=sayTitle ,并按回車鍵??梢钥吹轿覀兂晒Φ恼{(diào)用了另一個(gè)控制器的動(dòng)作方法。
與使用 action 參數(shù)指定要調(diào)用的動(dòng)作類似,用 controller 參數(shù)可以指定要調(diào)用的控制器。而此時(shí) action 參數(shù)指定的就是該控制器的動(dòng)作。
<!-- generated by Texy! -->
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
