codecamp

zentaophp框架的主要功能

zentaoPHP框架的主要功能如下:

一、单一入口模式

单一入口是现在比较流行的开发方式。好处在于可以有一个集中的控制。或者讲框架一个比较基本的东西也是单一入口吧。现在ZenTaoPHP框架支持web方式和命令行方式的两种入口文件。具体的例子大家可以查看app目录下面的demo/www/index.php和cli/call这两个文件。

二、MVC模式

ZenTaoPHP支持MVC方式的开发。不过相比较于其他框架的多种模板实现来讲,ZenTaoPHP并没有尝试去开发一套新的模板系统,而是采用PHP作为模板语言。这是快的一种解决方案,而且也是简洁的一种方案。

三、支持GET和PATH_INFO两种方式调用

支持 index.php?m=user&f=info&id=123这种GET方式的调用,也支持 /user/info/123.html 这种方式的调用。如果你能控制你的运行环境,可以使用PATH_INFO的方式,这样生成的URL地址更加简捷,而且对搜索引擎十分友好。

四、内置数据库访问层DAO

禅道框架内置了DAO数据库访问层,在PDO的基础上,提供了完整的SQL拼装功能,可以非常方便的书写SQL查询语句,获取数据。而且我们在实现DAO的时候,花了很大的力气在兼容之前大家手写SQL的习惯,所以大家在使用禅道框架的DAO的时候,会发现很亲切,因为和手写SQL基本上是相同的。

五、支持跨模块之间的调用

在ZenTaoPHP框架中,一个模块的control或者model都可以直接调用另外一个模块的model,这样就可以将一个应用进行模块化,然后通过采用不同模块的功能,来实现比较复杂的功能。

除了model的调用之外,一个模块的control还可以fetch另外一个模块的control方法,这种一般用于一些共用的页面元素,比如打印一个搜索表单,或者打印菜单等等。通过control之间的互相调用,实现代码的共享。

六、无需路由配置,即可获得简捷的URL

ZenTaoPHP框架提供了简洁的参数传递方式。比如user模块有一个read方法,需要id和name两个参数,通常的PATH_INFO为user/read/id/1/name/wwccss.html,而zentaoPHP支持user/read/1/wwccss.html的形式,这样就省略了参数名的传递。这一切,都不需要配置任何的路由,直接通过框架的功能就可以获得。

七、灵活的数据验证机制

禅道PHP框架内置了灵活的数据验证机制,可以实现对数据的修正和检查,代码极其紧凑,简洁。

八、配置和语言可以通过对象方式引用

zentaoPHP框架的配置没有用什么ini文件,也没有用什么yaml文件,也没有用php的数组,而是直接用PHP对象的形式。这样配置文件不需要解析,就可以直接使用,而且引用起来十分的方便。形如$config->db->host的这种方式,而不是$config['db']['host']的这种方式。书写起来会非常的流畅!

九、方便的全局变量应用

在zentaoPHP框架中,引用GET,POST, SERVER这样的全局变量,可以通过这样的方式:$this->get->userName, $this->post->userName, $this->server->remote_addr。

十、所见即API

在现在开放平台的潮流下面,有一个非常好的api机制是比较重要的。在zentaoPHP框架中,每一个接口都可以成为api。至于api的方式,是通过其访问的扩展名来加以区分。比如如果你访问的是user/read/id/123.html,那么返回的是正常的网页。如果访问的是user/read/id/123.json,那么返回的就是json格式的数据。

十一、内置多语言支持

zentaoPHP框架支持多种语言功能,会自动根据当前用户客户端的信息来判断使用何种语言,这样可以方便大家开发多语言的应用。

十二、 强大的扩展机制

zentaoPHP框架实现了强大的扩展机制。通过这套扩展机制,做定制开发可以说是轻而易举,再也不用担心维护多个分支带来的痛苦了。

关于zentaoPHP框架
zentaophp框架授权协议
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }