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

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