重新审视 PHP 框架 CodeIgniter VS Zend
作者:Ekerete
翻译:Emeric Li (http://lee.kometo.com/index.php/archives/117
)
原文:http://www.avnetlabs.com/php/php ... r-vs-zend-framework
我们计划从头开始一个新项目,为此评估了一些PHP框架。我们的备选列表有CakePHP , CodeIgniter , Symfony和Zend 。 我们分别使用这4种框架编写了一个相同的小应用(一个简单的Wiki应用),希望我们能尽快选定一个最合适的。
声明:我会努力确保自己的客观性,虽然我是一个ColdeIginter的爱好者。我所工作的公司是Zend的合伙人(我们已经使用了Zend Platform 和 Zend Studio)。I can’t help factoring that in。
尽管一开始的计划是评估4个框架,但是这篇文章实际是CodeIgniter和Zend Framework的直接比较。在花费了几个小时研究了这4个框架后,我不得不把Symfony和CakePHP从名单中排除。理由如下:
Learning curve 学习曲线
Symfony 和
CakePHP都有一个非常陡峭的学习曲线。CakePHP有严格的规则:数据表明此、文件位置、方法名和类名。Symfony使用 .yml
格式(需要学习,虽然它不是真的很难)来存储配置信息,并且大量的操作需要通过控制台(console)完成,创建数据表、数据模型和很多其它文件都需要
使用命令行。
Strict ORM: 严格的ORM
Symfony 和 CakePHP都有一个成熟的对象关系映射器(object-relational mappers | ORM)
,提供对数据的访问,但是这一特性很难被禁用,除非作出大量的努力。这些ORM有着严格的规则和约定,它们必须被遵循。与之相反,Zend
Framework 和 CodeIgniter
在是否使用Models和如何使用Models上非常灵活的。使用Models是可选的,虽然它们都有数据映射器(data
mappers),但没有这些应用一样可以进行(开发编写)。应用的数据操作将是极其密集和精细(intensive )的,我们不愿意受到选择的限制。
Flexibility: 灵活性
Zend Framework和CodeIgniter比其他两个框架更灵活。
最终对比
CodeIgniter
Zend Framework
Set Up 初始建立
CodeIgniter很容易初始化。 复制框架的所有文件到网络服务器,这是一个不错的开始。 它的文件夹也很小-大约2 .1兆。从开始建立,5分钟后,我就可以显示出默认主页。
Zend Framework需要麻烦一些,它需要创建一个bootstrap文件,填写所有的初始化设置。比较之下,框架有点大-大约12.4MB。整个初始建立过程用来大约19分钟。
文档
文档的结构和组织相当好,但是不如Zend Framework详细。CodeIgniter有论坛和W
相关文档:
本文介绍的脚本易于理解、使用简单并可以快速掌握。
简单的掷骰器
许多游戏和游戏系统都需要骰子。让我们先从简单的部分入手:掷一个六面骰子。实际上,滚动一个六面骰子就是从 1 到 6 之间选择一个随机数字。在 PHP 中,这十分简单:echo rand(1,6);。
在许多情况下,这基本上很简单。但是在处理机率游戏时,我们需要 ......
PHP多用户在线客服系统,后台有代码镶嵌到你的系统中,不过这个是英文的,感觉很实用,简洁,方便,需要的可以自己汉化,不就是改里面的一些提示信息嘛,地址是:http://mibew.org/
,这个是开源的,支持多用户同时在线联系客服,客服后台及时性很强,只要用户点击在线客服,后台就有提示,而且可以查看聊天记录,很多实用 ......
前提: Apache 和 Mysql已经安装完毕。
php 版本:php-5.2.6.tar.gz
下载地址:
ZendOptimiter-3.3.3-linux-glibc23-i386.tar.gz
下载地址:
1. 首先安装 GD库软件
libxml2-2.7.2.tar.gz
下载地址:
#tar -zxvf libxml2-2.7.2.tar.gz
#cd libxml2-2.7.2
#mkdir /usr/local/modules
#mkdir /usr/loc ......
我们的电话报名系统中,呼叫中心收集了用户的银行信息,然后请求银行的支付接口的webservice,需要进行超时设置,因为不能一直让学员等待
解决方法是
1:首先先要看一下php.ini里的默认超时时间,一般是120秒
2:在php代码里加上
ini_set('default_socket_timeout', 10);//设置超时时间
如下图
......
/* Author: 杨宇 <yangyu@sina.cn> */
//将秒(非时间戳)转化成 ** 小时 ** 分
function sec2time($sec){
$sec = round($sec/60);
if ($sec >= 60){
$hour = floor($sec/60);
$min = $sec%60;
$res = $hour.' 小时 ';
$min != ......