隨筆-31  評(píng)論-257  文章-0  trackbacks-0
                由于忙,很少時(shí)間學(xué)學(xué) FleaPHP 框架,不過之前也看了看學(xué)了點(diǎn)東西,感覺FleaPHP框架還是很不錯(cuò)的,有良好的MVC模式結(jié)構(gòu),比較方便的數(shù)據(jù)庫(kù)操作,好東西不敢獨(dú)享,所以獻(xiàn)上我在學(xué)習(xí)FleaPHP中的一點(diǎn)小心得,適合初接觸 FleaPHP 框架的同學(xué),PHP基礎(chǔ)不太好的話,建議先補(bǔ)習(xí)一下PHP再看看這系列的文章。
                本例子是我剛學(xué)FleaPHP框架時(shí)的小練習(xí),一步一步循序漸進(jìn),剛開始的例子顯得比較簡(jiǎn)單,都只是熟習(xí)他的環(huán)境而已,不過我將采用增量開發(fā)的模式,慢慢完善深入,同學(xué)們記得專心上堂哦,做好功課哦。(文章的末尾將提供完整源代碼打包,由于篇幅有限,所以文章中貼出來的代碼有的只是片段)
                這篇是我寫 FleaPHP 學(xué)習(xí)筆記的開篇,做的是一個(gè)簡(jiǎn)單的登錄功能,牛刀小試吧,認(rèn)大家認(rèn)識(shí)一下 FleaPHP 的MVC結(jié)構(gòu)與基本數(shù)據(jù)庫(kù)操作,如果是對(duì) FleaPHP 還不知道是什么東西的話,可以到以下網(wǎng)站了解了解。fleaphp.org

          數(shù)據(jù)庫(kù)準(zhǔn)備:數(shù)據(jù)庫(kù)里就只有一個(gè)表  tb_user   里面有三個(gè)字段,id ,name ,password 夠簡(jiǎn)單吧[smile]

          我的這個(gè)FleaPHP應(yīng)用的目錄結(jié)構(gòu)如下:


          圖中可以看到就一個(gè)index.php主頁(yè)文件,一個(gè)app與一個(gè)FLEA文件夾,因?yàn)镕leaPHP是采用單一入口框架,所以就只有一個(gè)index.php文件,所以的請(qǐng)求都經(jīng)由這個(gè)文件再進(jìn)行分類分發(fā),這樣可以提高代碼的安全性,可以將程序其它文件放置到URL訪問不到的地方,在index.php里引用該路徑就可以了。不過有點(diǎn)要注意的是文件的路徑的正確性。
          app文件夾就是我的程序代碼放置的地方,里面有Controller,Model,View,Table文件夾,Controller文件夾都是FleaPHP的命名約定的,最好使用這樣的命名,因?yàn)闀?huì)跟據(jù)請(qǐng)求到該文件夾中找相對(duì)應(yīng)的類文件的,好,我們先來看看index.php的代碼:
           1 <?php
           2 require("./FLEA/FLEA.php");
           3 FLEA::import(dirname(__FILE__)."/app");
           4 
           5 // 準(zhǔn)備數(shù)據(jù)庫(kù)連接信息
           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 ?>


                就這么個(gè)三四行代碼,程序就啟動(dòng)了,呵呵,不過后面還有呢。。。
          先來解析一下,第一句是 require("./FLEA/FLEA.php"); 就是要先導(dǎo)入FleaPHP的核心引擎,所以之前大家看到了有個(gè)FLEA文件夾,就是FLEA的核心引擎啦,這個(gè)大家先不用管它,等到要研究他的源代碼時(shí)再看吧,平時(shí)的使用就看看提供的API文檔就夠了。
                同學(xué)們注意了,F(xiàn)LEA::import(dirname(__FILE__)."/app"); 這句的作用是什么?這個(gè)import函數(shù)是FLEA的靜態(tài)函數(shù),用于將你的程序文件夾導(dǎo)入進(jìn)來,如果有玩過Java的同學(xué)應(yīng)該知道多少吧,當(dāng)FleaPHP接收到一個(gè)請(qǐng)求時(shí),會(huì)分析URL再調(diào)用相對(duì)的Controller和Action,
          如:http://localhost/fleatest/index.php?controller=Shop&action=checkout 這里即調(diào)用Shop控制器里面的checkout動(dòng)作,而FleaPHP怎么知道我的控制器代碼放在哪里呢?就是靠import這個(gè)語(yǔ)句了,將程序文件夾導(dǎo)入進(jìn)來之后,F(xiàn)leaPHP會(huì)自去到這個(gè)文件夾里找Controller文件夾再找Shop.php這個(gè)類文件,所以,如果你為了安全起見,將程序文件夾放在了其它訪問不到的地方,就得靠這個(gè)import來導(dǎo)入,以FleaPHP能正確找到所需要的Controller。(可能說得啰嗦了[redface],打字累了,燒根煙先,同學(xué)們小息片刻?。?br />
          接下來$dsn這個(gè)數(shù)組就是存放你連接數(shù)據(jù)庫(kù)的信息啦,聰明的同學(xué)一眼看出來了。之后當(dāng)然要設(shè)置入FleaPHP配置里面啦,用這個(gè)set_app_inf('dbDSN',$dsn);,之后,F(xiàn)LEA::runMVC(); 這個(gè)就是啟動(dòng)了。我們輸入的URL是 http://localhost/fleatest/index.php,由于FleaPHP默認(rèn)的Controller是Default,默認(rèn)的Action是Index,所以,這時(shí),F(xiàn)leaPHP就會(huì)跳到app/Controller/Default.php這個(gè)頁(yè)面來,代碼如下:
           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         //新建一個(gè)對(duì)應(yīng)user數(shù)據(jù)表操作的Model對(duì)象
          11         $mod_user = new Model_User;
          12         //根據(jù)用戶輸入的用戶名查找數(shù)據(jù)庫(kù)有沒有存在
          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 = '密碼不正確,請(qǐng)重新輸入!';
          24                 include('app/View/login.php');
          25             }
          26         }
          27     }
          28 }
          29 ?>


                為什么類名是 Controller_Default ?這都是FleaPHP的命名規(guī)則,大家可以去官網(wǎng)看看它的命名規(guī)則,這里就不多啰嗦了?,F(xiàn)在,它將會(huì)調(diào)用actionIndex的默認(rèn)action函數(shù),里面只引入了一個(gè)php文件,那就是登錄界面的頁(yè)面。

                在登錄界面的Form里,設(shè)置好action提交路徑,使它提交到Default控制器的Login動(dòng)作(action),里面實(shí)例化了一個(gè)Model對(duì)象,該對(duì)象是封裝了對(duì)表tb_user的操作,之后程序邏輯就是跟據(jù)登錄成功與否來進(jìn)行相應(yīng)的信息表示啦,簡(jiǎn)單的實(shí)現(xiàn)了從Controller -> Model -> View 的MVC訪問操作流程。
          大概的結(jié)構(gòu)就這么簡(jiǎn)單了。

          最后符上源代碼:[down=attachments/month_0710/520071010232245.rar]點(diǎn)擊下載此文件[/down]

          大家如果有什么疑問,可以留言或發(fā)到我郵箱里!


          posted on 2008-07-29 13:57 姜大叔 閱讀(356) 評(píng)論(1)  編輯  收藏 所屬分類: PHP

          評(píng)論:
          # re: FleaPHP初哥報(bào)到(1)--簡(jiǎn)單登錄 2008-09-06 13:19 |
          寫的很詳細(xì) 很好 加油!  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 曲周县| 调兵山市| 仲巴县| 舟曲县| 新津县| 朝阳县| 修武县| 古浪县| 锡林浩特市| 瓮安县| 会泽县| 弥渡县| 孙吴县| 新泰市| 蓬莱市| 日照市| 五河县| 吐鲁番市| 疏附县| 石河子市| 华亭县| 云阳县| 公安县| 高碑店市| 论坛| 乐至县| 土默特左旗| 兰西县| 汝城县| 察哈| 楚雄市| 海兴县| 湄潭县| 朝阳区| 南乐县| 临颍县| 三亚市| 宜良县| 榆林市| 深泽县| 岫岩|