一个php的MVC架构:zoop简介

来源:互联网 发布:在那里下载淘宝助理 编辑:程序博客网 时间:2024/06/03 01:15
 zoop是国外开发的一款基于mvc架构的php的web快速开发构架,与ms的。net,还有ROR, j2ee等对照,zoop希望能发展成为php里面主流的开发框架,当然没有出色的性能肯定是不能胡说的了,呵呵,总之,定位是挺高的了,从2001年诞生至今,现在的稳定版本是:1.1 。 我接触这个构架的原因也是比较偶然的了,当初我们公司希望我能开发一个给公司内部用的游戏管理平台,首先总监要我从原来论坛用的那一套discuz构架改过来就可以了,可怜我接受这个任务时,没有接触过php,随后我就硬着头皮看了一天php就霸王硬上弓,第二天就把他们以前写的代码拿过来看,天啊,由于discuz很多都是php和html混合着写,当时对于我这个既不懂html,又不熟php的人真是一种煎熬。后来幸亏有一个同事提出用类似于ror的一个python的架构django来做,当时我都不知道要郁闷几天。django确实爽,把表现和业务代码分离,使我不需要太关心界面哪些事情,而且它有着一个强大的数据库管理工具,并且python也比较容易学习,终于,我在学习了几天后开始架设后台。但后来总监据说又找到了一个php的架构——zoop,并且是一个mvc的架构的,不会像discuz那样乱,而且为了方便统一用php,又让我从新开始用php了,艾,没办法。。。。。。。只好又放弃django了。 不过用了zoop后,确实感觉到它是一个非常好的架构,首先,它可以让我不必去关心太多的html的表现,只管去写自己的业务代码,可以这么说吧,我的php学习真是全靠了zoop,我才慢慢的了解php的世界;其次,它那强大构架生成,它集合了许多常用的操作——数据库,html的表现,js,pdf的表现,email,还有短信息等等。总之,一款不错的架构,不过貌似在国内应该还没有什么人应用,不过现在国内应该还是phpwind和discuz占据着大半江山,加上zoop的说明文档都是英文,而且还没有人做汉化或者中文文档的编写,因此知道的人不多。 废话少说,我给大家事例一个,大家应该就可以知道大概了,想要知道更多信息,大家可以访问:http://zoopframework.com,我用的环境是:win xp,mysql 5.0 ,Apache 2.0, php 5.14. 从zoop主页上面下载下来原始构架解压后,主要有三个文件夹,也相当于三部分:1。skeleton,你自己写的应用程序所在的文件夹,你也可以改成其他名字2。smarty,一个模版引擎3。zoop,zoop框架里面的函数库,包括了数据库,显示,pdf,邮件等许多有用的功能。skeleton:应用程序文件夹,在我的demo里面为demo文件夹,里面一般来说主要需要自己去修改及编写代码的地方为:zone_default.php,include.php,config文件夹里面的那些个php,比较重要的有db.php,里面的内容是你连接数据库的一些必要信息。另外里面的zone_admin.php是框架默认带的一个php,里面你可以随意书写自己的代码。 1。一般而言,初步搭好框架后,你可以使用http://localhost/zoopall/demo/index.php/这个地址来访问你的程序页面,这时候程序会从index,php跳转到zone_default.php执行,首先执行的是zone_default.php里面的zone_default::pageDefault($inPath)这个函数,$inPath这个参数你不用管它,里面几乎每个函数的参数都带这个。你可以一步步地跟踪代码,function pageDefault($inPath){// You may usually want the following line, but for our demo we don't global $sGlobals; global $gui;// //this is for gets. It displays the page//$this->zoneRedirect("login");$gui->Generate("favor/main.tpl","favor/SideBar.tpl","mainmenu.tpl", "Supernerd Admin"); //$gui->display("default.tpl");}在pageDefault($inPath)这个函数里面,你可以看到我使用了$gui->Generate("favor/main.tpl","favor/SideBar.tpl","mainmenu.tpl", "Supernerd Admin");这句话来显示一个页面,这是显示一个简单的链接页面。你还可以把//$this->zoneRedirect("login");这句话的注释去掉,把$gui->Generate("favor/main.tpl","favor/SideBar.tpl","mainmenu.tpl", "Supernerd Admin");这句话加上注释,就可以看到现了另一个页面,这时是一个登陆的页面,这个登陆页面这个时候执行的是下面的这个函数:function pageLogin($inPath),呵呵。最后,你可以把前两句话都注释掉,把最后一句//$gui->display("default.tpl");的注释去掉,又会显示另一个页面。还不错吧,他们这种显示都是通过调用类$gui来实现的,调用的时候你要实现声明:global $gui;gui还有很多有趣的功能你可以去查看zoop里面gui这个文件夹里面那些php。$gui->Generate和$gui->display都是用来显示页面的调用,里面的tpl文件在demo的templates/default文件夹里面,你可以找出来查看一下。好,现在去看看include.php,看看里面究竟有什么:////////////////////////////////////////////////////// include all zone subclasses here //////////////////////////////////////////////////////$zoop->addZone('default');$zoop->addZone('default_login');$zoop->addZone('admin');$zoop->addZone('master');$zoop->addZone('favor');// $zoop->addZone('example');看到了么,这里添加你要添加的类,默认的情况下,只有$zoop->addZone('default');$zoop->addZone('default_login');$zoop->addZone('admin');这三句话,分别对应着zone_default,zone_admin及zone_default_login这三个类及那几个名字相关的php。而:$zoop->addZone('master');$zoop->addZone('favor');这两个是我自己添加的两个类,其中master需要数据库的支持,里面实现了一个简单的用户查看,添加,及搜索功能。favor就是一个简单的友情链接一样的页面,刚才您应该已经看到了。你可以在function pageDefault($inPath)里面把//$gui->display("default.tpl");注释去掉,再把前面两句注释掉,然后访问http://localhost/zoopall/demo/index.php/看看有什么效果,你可以看见有好几个链接出现在你面前,你可以点其中的Super Admin进去,可以看见一个登录页面,呵呵,跟踪一下代码吧,就知道它怎么跳到这里了,当然了你还需要一个用户名跟密码。好了,你可以在你的本机上建立mysql数据库,这是我的建数据库语句:--------------------------------------------------------------------------------/*MySQL Data TransferSource Host: localhostSource Database: mywebTarget Host: localhostTarget Database: mywebDate: 2007-1-17 23:32:41*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for tuser-- ----------------------------CREATE TABLE `tuser` ( `uid` int(11) NOT NULL auto_increment, `name` char(20) NOT NULL, `password` char(20) NOT NULL, `priority` int(11) default NULL, `regtime` bigint(20) default NULL, PRIMARY KEY (`uid`), UNIQUE KEY `name` (`name`)) ENGINE=MyISAM AUTO_INCREMENT=1004 DEFAULT CHARSET=latin1;-- ------------------------------ Records -- ----------------------------INSERT INTO `tuser` VALUES ('1000', 'kaka', '123456', '1', '1162310400');INSERT INTO `tuser` VALUES ('1001', 'admin', '123456', '1', '1162310400');INSERT INTO `tuser` VALUES ('1002', 'aaa', '12', '1', '1168732800');INSERT INTO `tuser` VALUES ('1003', 'maomao', '123456', '0', '1168874313');--------------------------------------------------------------------------------其中只有uid为1000的才能看到全部的页面,而其他的只能看到一般的页面。呵呵,今天先写到这,太晚了。明天接着写。
原创粉丝点击