由于忙,很少时间学学 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
姜大叔 阅读(345)
评论(1) 编辑 收藏 所属分类:
PHP