由于忙,很少時間學學 FleaPHP 框架,不過之前也看了看學了點東西,感覺FleaPHP框架還是很不錯的,有良好的MVC模式結構,比較方便的數據庫操作,好東西不敢獨享,所以獻上我在學習FleaPHP中的一點小心得,適合初接觸 FleaPHP 框架的同學,PHP基礎不太好的話,建議先補習一下PHP再看看這系列的文章。
本例子是我剛學FleaPHP框架時的小練習,一步一步循序漸進,剛開始的例子顯得比較簡單,都只是熟習他的環(huán)境而已,不過我將采用增量開發(fā)的模式,慢慢完善深入,同學們記得專心上堂哦,做好功課哦。(文章的末尾將提供完整源代碼打包,由于篇幅有限,所以文章中貼出來的代碼有的只是片段)
這篇是我寫 FleaPHP 學習筆記的開篇,做的是一個簡單的登錄功能,牛刀小試吧,認大家認識一下 FleaPHP 的MVC結構與基本數據庫操作,如果是對 FleaPHP 還不知道是什么東西的話,可以到以下網站了解了解。
fleaphp.org
數據庫準備:數據庫里就只有一個表 tb_user 里面有三個字段,id ,name ,password 夠簡單吧[smile]
我的這個FleaPHP應用的目錄結構如下:
圖中可以看到就一個index.php主頁文件,一個app與一個FLEA文件夾,因為FleaPHP是采用單一入口框架,所以就只有一個index.php文件,所以的請求都經由這個文件再進行分類分發(fā),這樣可以提高代碼的安全性,可以將程序其它文件放置到URL訪問不到的地方,在index.php里引用該路徑就可以了。不過有點要注意的是文件的路徑的正確性。
app文件夾就是我的程序代碼放置的地方,里面有Controller,Model,View,Table文件夾,Controller文件夾都是FleaPHP的命名約定的,最好使用這樣的命名,因為會跟據請求到該文件夾中找相對應的類文件的,好,我們先來看看index.php的代碼:
1 <?php
2 require("./FLEA/FLEA.php");
3 FLEA::import(dirname(__FILE__)."/app");
4
5 // 準備數據庫連接信息
6 $dsn = array(
7 'driver' => 'mysql',
8 'host' => 'localhost',
9 'login' => 'root',
10 'password' => 'root',
11 'database' => 'test',
12 );
13
14 set_app_inf('dbDSN',$dsn);
15
16 FLEA::runMVC();
17 ?>
就這么個三四行代碼,程序就啟動了,呵呵,不過后面還有呢。。。
先來解析一下,第一句是 require("./FLEA/FLEA.php"); 就是要先導入FleaPHP的核心引擎,所以之前大家看到了有個FLEA文件夾,就是FLEA的核心引擎啦,這個大家先不用管它,等到要研究他的源代碼時再看吧,平時的使用就看看提供的API文檔就夠了。
同學們注意了,F(xiàn)LEA::import(dirname(__FILE__)."/app"); 這句的作用是什么?這個import函數是FLEA的靜態(tài)函數,用于將你的程序文件夾導入進來,如果有玩過Java的同學應該知道多少吧,當FleaPHP接收到一個請求時,會分析URL再調用相對的Controller和Action,
如:http://localhost/fleatest/index.php?controller=Shop&action=checkout 這里即調用Shop控制器里面的checkout動作,而FleaPHP怎么知道我的控制器代碼放在哪里呢?就是靠import這個語句了,將程序文件夾導入進來之后,F(xiàn)leaPHP會自去到這個文件夾里找Controller文件夾再找Shop.php這個類文件,所以,如果你為了安全起見,將程序文件夾放在了其它訪問不到的地方,就得靠這個import來導入,以FleaPHP能正確找到所需要的Controller。(可能說得啰嗦了[redface],打字累了,燒根煙先,同學們小息片刻!)
接下來$dsn這個數組就是存放你連接數據庫的信息啦,聰明的同學一眼看出來了。之后當然要設置入FleaPHP配置里面啦,用這個set_app_inf('dbDSN',$dsn);,之后,F(xiàn)LEA::runMVC(); 這個就是啟動了。我們輸入的URL是 http://localhost/fleatest/index.php,由于FleaPHP默認的Controller是Default,默認的Action是Index,所以,這時,F(xiàn)leaPHP就會跳到app/Controller/Default.php這個頁面來,代碼如下:
1 <?php
2 FLEA::loadClass("Model_User");
3 class Controller_Default
4 {
5 function actionIndex(){
6 include('app/View/login.php');
7 }
8
9 function actionLogin(){
10 //新建一個對應user數據表操作的Model對象
11 $mod_user = new Model_User;
12 //根據用戶輸入的用戶名查找數據庫有沒有存在
13 $result = $mod_user->findByName($_POST['username']);
14 if(empty($result)){
15 $message = '該用戶不存在!';
16 include('app/View/login.php');
17 }else{
18 //判斷密碼是否相同
19 if($result['password'] == $_POST['password']){
20 $username = $result['name'];
21 include('app/View/welcome.php');
22 }else{
23 $message = '密碼不正確,請重新輸入!';
24 include('app/View/login.php');
25 }
26 }
27 }
28 }
29 ?>
為什么類名是 Controller_Default ?這都是FleaPHP的命名規(guī)則,大家可以去官網看看它的命名規(guī)則,這里就不多啰嗦了。現(xiàn)在,它將會調用actionIndex的默認action函數,里面只引入了一個php文件,那就是登錄界面的頁面。
在登錄界面的Form里,設置好action提交路徑,使它提交到Default控制器的Login動作(action),里面實例化了一個Model對象,該對象是封裝了對表tb_user的操作,之后程序邏輯就是跟據登錄成功與否來進行相應的信息表示啦,簡單的實現(xiàn)了從Controller -> Model -> View 的MVC訪問操作流程。
大概的結構就這么簡單了。
最后符上源代碼:[down=attachments/month_0710/520071010232245.rar]點擊下載此文件[/down]
大家如果有什么疑問,可以留言或發(fā)到我郵箱里!
posted on 2008-07-29 13:57
姜大叔 閱讀(353)
評論(1) 編輯 收藏 所屬分類:
PHP