十款PHP开发框架横向比较

 更新时间:2016年11月25日 16:08  点击:1530

 

PHP开发框架近来在PHP社区中成为讨论的热点,几乎每天都在推出新的框架。面对市面上超过四十种的开发框架,你很难判断究竟哪一款最适合你,尤其是在这些框架所提供的功能不尽相同的时候。

本文将引导你遍览十款最热门最流行的开发框架,并对它们作出横向比对。我会先列出一张所有框架的一览表,而后我们将对它们逐个简述。

概览
以下你看到是这十款开发框架的一览表,列举了他们各自所提供的功能。

Framework Comparison Chart

Framework PHP4 PHP5 MVC1 Multiple DB''s2 ORM3 DB Objects4 Templates5 Caching6 Validation7 Ajax8 Auth Module9 Modules10
ZendFramework -       -   -     - -  
CakePHP             -         -
Symfony Project -           -         -
Seagull Framework                   -    
WACT         -     -   - - -
Prado -   -   - -            
PHP on TRAX -           - -     - -
ZooP Framework         -              
eZ Components -   -   -         - -  
CodeIgniter         -         - -  

 

#1: Indicates whether the framework comes with inbuilt support for a Model-View-Controller setup.
#2: Indicates whether the framework supports multiple databases without having to change anything.
#3: Indicates whether the framework supports an object-record mapper, usually an implementation of ActiveRecord.
#4: Indicates whether the framework includes other database objects, like a TableGateWay.
#5: Indicates whether the framework has an inbuilt template engine.
#6: Indicates whether the framework includes a caching object or some way other way of caching.
#7: Indicates whether the framework has an inbuilt validation or filtering component.
#8: Indicates whether the framework comes with inbuilt support for Ajax.
#9: Indicates whether the framework has an inbuilt module for handling user authentication.
#10: Indicates whether the framework has other modules, like an RSS feed parser, PDF module or anything else (useful).

#1:
表示框架是否内建模型-视图-控制器。
#2:
表示框架是否无需修改即可支持多数据库。
#3:
表示框架是否支持对象记录映射器,通常这是ActiveRecord的封装包。
#4:
表示框架是否包含其它数据库对象,比如TableGateWay
#5:
表示框架是否内建模板引擎。
#6:
表示框架是否缓存对象或者其他缓存机制。
#7:
表示框架是否内建校验或过滤组件。
#8:
表示框架是否内建Ajax支持。
#9:
表示框架是否内建用户验证模块。
#10:
表示框架是否包含其他模块,例如RSS feed解析器、PDF模块或其他实用模块。

如果上表所列有不当之处,敬请斧正。


Zend Framework

Zend Framework
还相当新,尚处在beta阶段(译者注: 相对于作者写这篇文章之时),因此还有些功能有待完整(比方说用户验证模块),但它本身已经有不少功能了。尽管从对比表上来看它没占到什么便宜,可 Zend Framework确确实实涵括了一些处理PDF文档、RSS源、在线服务(Amazon, Flickr, Yahoo)的模块,甚至更多。Zend Framework同时也包含了数个不同的数据库对象,极大地便捷了对数据库进行查询的实现,甚至免去你手写SQL查询脚本的麻烦。

当前,Zend Framework并未完全支持ORM,但是开发人员仍然陷入在是否要添加ORM层的争论中。也许在将来会实现这些功能,你就可以编写自己的ORM封装包,投稿到社区,并有机会将之整合入框架的未来版本。

Zend Framework
看上去前途一片光明,而且它同时又修正了一些常见的PHP问题。也许稳定版本就可以在对比表里面表现得更出色了!

CakePHP


CakePHP

 

 




这个方法可去掉字符串中包含的任何 HTML 及 PHP 的标记字符串,例如:

 $str = "<html><body><table width=100 border=1><tr><td><img src=''qq-373461091.jpg''>文本内容</td></tr></table>< /body></html>";
 echo "1.".$str."<br>";
 echo "2.".strip_tags($str);

则第一个输出表格里的图片和文本内容,第二个则只输出文本内容“文本内容”,但若是字符串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会返回错误




学了几种语言,有时回想,却发现没什么积累,偏偏自己又喜欢卖弄;怎奈何自己又不甘堕落,于是乎就强迫自己写写日记,但是自己跟自己对话又觉得没意思, 就想着把日志写成教程,给社区里的难兄难弟没做做参考.小弟实在是没有什么经验,还望那些看到本文的有缘人多多包涵....



php5自带了一个开发web service的扩展extension=php_soap.dll;
在php.ini中加入上面扩展;同时配置ini文件的以下选项
Name                   Default Changeable  Changelog
soap.wsdl_cache_enabled  "1"    PHP_INI_ALL Available since PHP 5.0.0.
soap.wsdl_cache_dir    "/tmp"   PHP_INI_ALL Available since PHP 5.0.0.
soap.wsdl_cache_ttl    "86400"  PHP_INI_ALL Available since PHP 5.0.0.
这样就可以使用SoapServer了.
那建一个文件,内容如下
<?php
class service_class {
/**
* @return string
* */
function sayHello(){
return ''hello world'';
}
/**
* @param string $name;
* @return string;
*/
function getName($name){
return $name;
}
}


$server = new SoapServer(''buildin.wsdl'');(1)
$server->setClass(''service_class'');(2)
$server->handle();(3)

?>
这里有一点需要注意的是:如果要在生成的wsdl文件有类型的话,应使用方法注释;(string,integer等).

(1)生成一个实例,参数"buildin.wsdl"是wsdl文件所在的位置,因为SoapServer还没有提供生成wsdl的实现,因些要指明细wsdl文件所在的位置.
(2)注册webservice的提供的方法,默认为类里面的所有方法
(3)处理请求;

到这里为止,在浏览器中访问本php文件,如果出现如果提示
"cant find HTTP_RAW_POST_DATA";则在创建soapServer前,插入以下代码
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
if (!isset($HTTP_RAW_POST_DATA)){
$HTTP_RAW_POST_DATA = file_get_contents(''php://input'');
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

此时如果提示bad request之类的错误,说明web service已经启动了.

如果没有忘记前面前到的wsdl的话,此刻必会想即然不还不能生成wsdl文件的话,那那个buildin.wsdl从何而来呢,如果对zend studio熟悉的话,就会想到tool菜单下面的wsdl generator,对了,用这个工具可以生成很帅的wsdl文件,使用方法在这里就不多说了,自己就两下就知道是怎么生成了..

server端到此结束.
令天就先到这里,,明天接续delphi客户端如果调用.....

<

转贴:http://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=8734&forum=1

目前有不少AMP(ApacheMySQLPHP)的集成软件,可以让我们一次安装并设置好。这对于不熟悉AMP的用户来说,好处多多。

一、使用AMP集成软件的优点:
1、可避免由于缺乏AMP的知识,而无法正确设置环境;
2、可快速安装并设置好AMP环境,让我们直接开始真正感兴趣的软件,如xoops;
3、可方便的搭建测试环境,对于测试“是AMP环境问题,还是XOOPS造成的问题”很有帮助,采用排除法即可。

二、常用的AMP集成软件:
1、AppServ:http://www.appservnetwork.com/
这个软件在台湾很流行。看到不少书籍也极力推荐,估计都是受台湾用户的影响。

2、XAMPP:http://www.apachefriends.org/en
这个软件支持多个平台,WinLinuxSolarisMac OS X,目前也有不少人使用。

3、WAMP5:http://www.wampserver.com/en/
这是我今天极力推荐的,绝对五星级。注意它的名字是带个5的哦,意思就是WAMP5使用最新的PHP5版本,正如官方网站上的口号:Discover PHP5 with WAMP5 ! 

三、根据我的经验,WAMP5有如下优点:
1、XOOPS在WAMP5中使用,没有任何问题。
2、WAMP5专注于Windows平台,安装设置及其简单。
3、PHP默认的是5.x版本,如果需要php4.x,只要安装php4.x插件,就可以在两者之间自由的切换,非常方便。
4、MySQL默认的是5.x版本,但可以通过选择老版本的WAMP5,从而使用4.x的MySQL。
5、可视化的菜单管理,极其方便。如,打开关闭php extention、Apache module等,直接通过菜单选择就可以。
6、还有各种插件,如ZEND OPTIMIZER ADD-ON等。
7、如果有疑问,官方还有论坛可以求助。
......更多优点:谁用谁知道,早用早知道^_^

导读:
  大写Y表示年四位数字,而小写y表示年的两位数字;
  小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。
  echo date(''Y-M-j'');
  2007-Feb-6
  echo date(''Y-m-d'');
  2007-02-06
  大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);
  没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。
  echo date(''Y-M-j'');
  2007-Feb-6
  echo date(''Y-F-jS'');
  2007-February-6th
  大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)
  大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。
  小结:
  表示年可以用大写的Y和小写y;
  表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);
  表示日可以用小写d和小写j,大写S表示日期的后缀。
  2,时:分:秒
  默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。
  echo date(''g:i:s a'');
  5:56:57 am
  echo date(''h:i:s A'');
  05:56:57 AM
  小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。
  当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。
  echo date(''G:i:s'');
  14:02:26
  大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数
  小结:
  字母g表示小时不带前导,字母h表示小时带前导;
  小写g、h表示12小时制,大写G、H表示24小时制。
  3,闰年、星期、天
  echo date(''L'');
  今年是否闰年:0
  echo date(''l'');
  今天是:Tuesday
  echo date(''D'');
  今天是:Tue
  大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;
  小写l表示当天是星期几的英文全写(Tuesday);
  而使用大写D表示星期几的3个字符缩写(Tue)。
  echo date(''w'');
  今天星期:2
  echo date(''W'');
  本周是全年中的第 06 周
  小写w表示星期几,数字形式表示
  大写W表示一年中的星期数
  echo date(''t'');
  本月是 28 天
  echo date(''z'');
  今天是今年的第 36 天
  小写t表示当前月份又多少天
  小写z表示今天是本年中第几天
  4,其他
  echo date(''T'');
  UTC
  大写T表示服务器的时间区域设置
  echo date(''I'');
  0
  大写I表示判断当前是否为夏令时,为真返回1,否则为0
  echo date(''U'');
  1170769424
  大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。
  echo date(''c'');
  2007-02-06T14:24:43+00:00
  小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。
  echo date(''r'');
  Tue, 06 Feb 2007 14:25:52 +0000
  小写r表示RFC822日期。
  小小的date()函数就显示出了PHP的强大功能和迷人魅力,再比较下ASP,呵呵。

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • 基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍

    这篇文章主要介绍了基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍 的相关资料,需要的朋友可以参考下...2016-05-14
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • vscode搭建STM32开发环境的详细过程

    这篇文章主要介绍了vscode搭建STM32开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-02
  • .net数据库操作框架SqlSugar的简单入门

    这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • CI框架开发新浪微博登录接口源码完整版

    首先来看下流程:流程原理: 1.通过code获得access_token通过授权,并获取用户的信息(包括用户u_id)(这个u_id在后面的第三方登录表里面叫sina_id,那个表是需要自己建的) 2.查询第三方登录表,如果不存在用户sina_id,分2...2014-05-31
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • 安卓开发之Intent传递Object与List教程

    下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。 Intent 不仅可以传单个的值,也可以传对象与数据集合...2016-09-20
  • c# 常用框架汇总

    这篇文章主要介绍了c# 常用框架汇总,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...2021-04-24
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • 如何设计一个安全的API接口详解

    在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下...2021-08-12
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • 微信开发生成带参数的二维码的讲解

    在微信公众号平台开发者那里,在“账号管理”那里,有一项功能是“生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微...2016-05-19
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • 搭建php Laravel框架教程详解

    Laravel框架我们用到的不多了,但如果使用需要搭配了,下面我们来看一篇关于搭建php Laravel框架教程详解,具体的操作细节如下所示,希望对各位有帮助。 一、安装 Compos...2016-11-25