欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
ZenTaoPHP
ZenTaoPHP是一款轻量级的,灵活的,注重性能的国产PHP框架,以LGPL协议发布。
目录 |
ZenTaoPHP是什么
ZenTaoPHP是一个非常简单的PHP框架,它支持MVC三层的开发方式。zen是“禅”的意思,tao是“道”的意思。
我在读《编程之道》和《编程之禅》这两本书的时候,深受启发,故将此框架命名为ZenTao。
为什么开发这个框架
开发这个框架的主要目的是为了后面的项目管理软件做铺垫。后面我计划开发的项目管理软件会是基于这个框架的一个应用。
为什么不选择其他的框架
原因很简单,因为其他的框架都太复杂。我要保证代码足够简单,而且性能要好。
为什么选择这个框架
简单,性能,这也许是你选择它的理由吧。从某种意义上讲,这个框架更多是一个约定,而不是框架。
- 简单
ZT框架核心只有四个文件,分别为调度类router.class.php,control类control.class.php,model类model.class.php和工具类helper.class.php。里面的代码也足够简单。我希望达到的目标是你看看代码就可以知道它在做什么,然后你想改它就知道如何改它。(如果你觉得没有达到这个目标,请一定告诉我。:))
- 性能
正因为简单,所以才保证了性能。具体的我还没有做过测试,后面有时间会来做一个评测。我估计和通常原生的php开发方式相比,没有太多性能损耗的东西
- 松散
框架,首先是一个框,把你框在了里面。所以很多框架会有很多的约定,你要怎样,你要怎样。还有很多隐形的约定,比如你要在你的代码里面写很多的xxxx之类的东东。我反正看的是很不爽。所以我在实现ZT的时候,除了基本的目录结构和类命名之外,基本上没有什么太多的约定。
还有就是我的框架实现时,没有出现什么zentao之类的东东,完全是中性的命名:router, control, model。
同时为了保证松散性,我特意舍弃了很多功能。大家可以参考《ZenTaoPHP框架没有的功能列表》这篇文章。功能越多,限制越多。
- 友好
在开发ZT的时候,包括类的命名、方法的命名、参数的命名、目录结构、注释,都精心做过调整。目的就是对开发人员友好。
比如在ZT中,配置项可以通过对象的方式来引用,$config->db->user,要比$config'dbuser'简洁顺畅的多。
再比如对于包含路径的处理。很多框架要包含一个文件的时候,都要定义一个常量来记录路径的绝对地址,然后包含文件的时候这样写 include(ROOT_PATH . 'xxx.class.php')。这样实际是破坏了目录结构信息的清晰。ZT框架对这个问题做了相应的处理,来尽量避免出现这个问题。
系统要求
- webserver最好是apache,打开rewrite模块。其他的webserver有待测试。
- php5.2版本以上,加载pdo, pdo:mysql, json, spl等扩展。不支持php4系列的版本。
- mysql没有要求,最好是最近比较高的版本。
安装
- 下载本框架,将其解压缩到webserver的根目录,比如/data/www/zentao/
- 修改apache的配置文件,增加一个virtualhost的配置/usr/local/etc/apache22/extra/httpd-vhosts.conf
NameVirtualHost 192.168.9.99:80 <VirtualHost 192.168.9.99:80> DocumentRoot /data/www/zentao/www/ ServerName pms.easysoft.com RewriteEngine on RewriteCond $1 !(index\.php|img|js|css|favicon\.ico|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] #RewriteLogLevel 1 #RewriteLog "/data/logs/rewrite.log" </VirtualHost>
如果需要使用PATH_INFO,则还需要修改config.test.php,将其中的requestType设置为PATH_INFO
具体的配置文件和你实际的安装目录相关。其中的IP地址需要换成你机器的实际地址。
如果需要及记录rewrite的日志,请把最后两行注释去掉。
- 创建一个数据库,比如名字叫做zentao
- 修改config.test.php, 修改其中的访问数据库的用户名和密码。
$config->db->name = 'zentao'; $config->db->user = 'root'; $config->db->password = ;
修改完毕之后,将其拷贝为config.php,或者使用符号链接。
- 重启apache之后,访问你配置的网站即可。
- ZenTaoPHP Hello World!
在module目录下面,有一个hello模块,展示了ZenTaoPHP的工作模式。你需要先把这个目录下面的SQL导入到数据库中,以创建所需要的blog表。