随笔-31  评论-257  文章-0  trackbacks-0
      由于忙,很少时间学学 FleaPHP 框架,不过之前也看了看学了点东西,感觉FleaPHP框架还是很不错的,有良好的MVC模式结构,比较方便的数据库操作,好东西不敢独享,所以献上我在学习FleaPHP中的一点小心得,适合初接触 FleaPHP 框架的同学,PHP基础不太好的话,建议先补习一下PHP再看看这系列的文章。
      本例子是我刚学FleaPHP框架时的小练习,一步一步循序渐进,刚开始的例子显得比较简单,都只是熟习他的环境而已,不过我将采用增量开发的模式,慢慢完善深入,同学们记得专心上堂哦,做好功课哦。(文章的末尾将提供完整源代码打包,由于篇幅有限,所以文章中贴出来的代码有的只是片段)
      这篇是我写 FleaPHP 学习笔记的开篇,做的是一个简单的登录功能,牛刀小试吧,认大家认识一下 FleaPHP 的MVC结构与基本数据库操作,如果是对 FleaPHP 还不知道是什么东西的话,可以到以下网站了解了解。fleaphp.org

数据库准备:数据库里就只有一个表  tb_user   里面有三个字段,id ,name ,password 够简单吧[smile]

我的这个FleaPHP应用的目录结构如下:


图中可以看到就一个index.php主页文件,一个app与一个FLEA文件夹,因为FleaPHP是采用单一入口框架,所以就只有一个index.php文件,所以的请求都经由这个文件再进行分类分发,这样可以提高代码的安全性,可以将程序其它文件放置到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文档就够了。
      同学们注意了,FLEA::import(dirname(__FILE__)."/app"); 这句的作用是什么?这个import函数是FLEA的静态函数,用于将你的程序文件夹导入进来,如果有玩过Java的同学应该知道多少吧,当FleaPHP接收到一个请求时,会分析URL再调用相对的Controller和Action,
如:http://localhost/fleatest/index.php?controller=Shop&action=checkout 这里即调用Shop控制器里面的checkout动作,而FleaPHP怎么知道我的控制器代码放在哪里呢?就是靠import这个语句了,将程序文件夹导入进来之后,FleaPHP会自去到这个文件夹里找Controller文件夹再找Shop.php这个类文件,所以,如果你为了安全起见,将程序文件夹放在了其它访问不到的地方,就得靠这个import来导入,以FleaPHP能正确找到所需要的Controller。(可能说得啰嗦了[redface],打字累了,烧根烟先,同学们小息片刻!)

接下来$dsn这个数组就是存放你连接数据库的信息啦,聪明的同学一眼看出来了。之后当然要设置入FleaPHP配置里面啦,用这个set_app_inf('dbDSN',$dsn);,之后,FLEA::runMVC(); 这个就是启动了。我们输入的URL是 http://localhost/fleatest/index.php,由于FleaPHP默认的Controller是Default,默认的Action是Index,所以,这时,FleaPHP就会跳到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的命名规则,大家可以去官网看看它的命名规则,这里就不多啰嗦了。现在,它将会调用actionIndex的默认action函数,里面只引入了一个php文件,那就是登录界面的页面。

      在登录界面的Form里,设置好action提交路径,使它提交到Default控制器的Login动作(action),里面实例化了一个Model对象,该对象是封装了对表tb_user的操作,之后程序逻辑就是跟据登录成功与否来进行相应的信息表示啦,简单的实现了从Controller -> Model -> View 的MVC访问操作流程。
大概的结构就这么简单了。

最后符上源代码:[down=attachments/month_0710/520071010232245.rar]点击下载此文件[/down]

大家如果有什么疑问,可以留言或发到我邮箱里!


posted on 2008-07-29 13:57 姜大叔 阅读(338) 评论(1)  编辑  收藏 所属分类: PHP

评论:
# re: FleaPHP初哥报到(1)--简单登录 2008-09-06 13:19 |
写的很详细 很好 加油!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: