查看文章 |
看完标题就知道这东西跟PHP有关,所以如果你是做PHP开发的,不管你是否对使用框架有兴趣,我建议你也可以了解一下这个框架。使用框架快速开发是我们的目的,但不是最终目标,应该学习框架架构的思想,深入了解它实现的机理。我对Thinkphp的了解来自与9月分程序员杂志的介绍,于是到它的官方网站看了一下,还真是个好东西。引用一小段关于该框架的说明:“ThinkPHP从Java的Struts结构移植过来,使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,借鉴了国外一些不错的思想,尤其是Java框架方面,因此熟悉J2EE的开发人员相对比较容易上手,其模版引擎、缓存机制、认证机制和扩展性方面均表现不凡。在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、Oracle,以及PDO的支持,让你有更多选择。”
开始学习之前,我想先说明几点:
本文的一些约定:
要构建一个带后台的新闻系统,首先明确需求是什么,然后根据需求设计数据库。因为我们的demo只需要实现一个带后台管理的新闻系统,所以新闻表和用户表就足够了。新闻表是前台网站和后台管理系统共用的,但是前台网站只对其有查询权限。后台管理系统对新闻和用户表有完全的管理权限。 新闻表:CREATE TABLE `prefix_news` ( //prefix替换成你使用的前缀 用户表:由于不使用thinkphp框架集成的RBAC权限控制,所以用户表可以自己随便设计。 CREATE TABLE `prefix_user` ( 使用thinkphp的后台管理系统添加节点(也就是webadmin),创建项目,你会发现thinkphp的文件夹下已经多了一个webadmin的文件夹,项目需要使用的一些目录已经全部给你建好了。关于这些目录是干什么用的,请自己参考thinkphp的手册。 如果你的新闻表使用thinkphp相同的表前缀保存在thinkphp相同的数据库中,那么点击节点名称webadmin,进入模块添加的页面自动创建Action、Dao和VO类,否则可以跳过这一段,下一段我们裸写Action、Dao和VO类,但我建议看过这一端的朋友还是看看下一段。所谓模块,其实就是你要操作的对象,比如你现在要操作的是新闻栏目,那么你可以添加名称为News的模块(名字一定要跟你操作的数据表的出去prefix_的名字对应),这样就可以使用http://localhost/thinkphp/webadmin/index.php/news来访问新闻模块了。项目首页模块请使用Index命名,因为默认http://localhost/thinkphp/webadmin/index.php会调用Index模块。定义好模块后点击模块的名称,进入添加操作的页面。这里添加的所有操作都是对模块而言的,比如你要对新闻进行列表操作,那么添加名为index(名字自己随便取,但最好是使用框架默认的那几个名字,使用自己的实现覆盖默认的操作)的操作,之后定义好index的实现,那么通过地址http://localhost/thinkphp/webadmin/index.php/news/index你就可以看到新闻列表啦。定义好add(显示添加新闻的页面),edit(显示修改新闻的页面),insert(添加新闻到数据库),update(保存修改到数据库),delete(删除表项)等操作后,返回到模块列表,点创建,然后到你的thinkphp/webadmin/Lib目录下看看,NewsVo、NewsDao、NewsAction三个类已经给你自动创建了,刚才定义的News模块的各个操作,也在NewsAction类中自动创建了,问我这三个类都是干嘛的?你还是自己看手册吧。 上面的那个自动创建虽然高级,但是如果项目的数据库与thinkphp使用的数据库不在一个库里,自己使用的前置也和它不一样(对于多个项目,这是常有的),所以自己动手裸写才是王道。从最简单的开始,在thinkphp/webadmin/Lib/Dao目录下建个NewsDao.class.php,内容嘛,下面一句就够了。 <?php 然后是定义VO,VO其实很简单,把数据表翻译过来就OK了,以后大家可以直接操作NewsVo的对象来操作News表,在thinkphp/webadmin/Lib/Vo下建立NewsVo.class.php <?php 最后定义Action,在thinkphp/webadmin/Lib/Action下建立NewsAction.class.php,加入你将要实现的操作,每个函数function都可以使用http://localhost/thinkphp/webadmin/index.php/news/function的形式来访问。 <?php O了,都搞好了,如果NewsAction的这些方法都实现了的话,就可以操作news表了。当然,要完全发挥thinkphp的威力,少不了ORM,VO自动填充、自动检验,数据缓存,CX、html标签库等功能,这个都是后话,大家先不要急。更多的东西还是留在以后再讲吧,^_^ |

