Haohappy的专栏--PHP5研究中心

PHP5研究中心 研究专业PHP技术,传播全球最新PHP动态 ,推广国内PHP企业应用

陈浩ID:Haohappy2004
574350次访问,排名64好友1人,关注者29
make ur life better..
Haohappy2004的文章
原创 167 篇
翻译 0 篇
转载 0 篇
评论 506 篇
Haohappy的公告
我的Blog主要关于PHP/Java WEB开发。欢迎讨论:

Email & MSN:


所有文章均为Haohappy原创或翻译,需要转载请通过Email与我联系


我的网站:
PHPEye开源社区
phpeye.com

我的新书:


《Programming PHP》中文版第二版,陈浩(Haohappy)、胡丹、徐景(RainX)译,电子工业出版社出版,2007年4月上市)

网上书店购买地址:
当当网(dangdang.com)
互动出版网(china-pub.com)
第二书店(dearbook.com)
华储网(huachu.com.cn)
蔚蓝书店(welan.com)

本书 配套论坛  勘误系统

常用参考手册:

最近评论
PrideRock:谢谢关注
jodynet:CSDN最近两年的改版,不知道改成什么样子。我已经好久没登陆CSDN看文章了。整个网站很乱,惨不忍睹来形容一点也不为过。
jiangtao:谢谢对我们的建议和意见。
wysea:呵呵,真巧,下午在CSDN上看到这篇文章,被打击的不行,这里HAOHAPPY就出头说话了,自信心又起来了! 谢谢!
ModelKingChina:深有同感,当时看到这篇文章只想拿块砖头拍编辑的脑袋.CSDN作为国内非常有影响力的IT综合站,在对待语言方面是不应该有所偏见的,如此简单的e文,本不应该翻译错误,更多的我想是编辑曲意的翻译. 语言与平台之争向来一个老大难问题,但CSDN却无论如何也不应该卷入的.
文章分类
收藏
    相册
    Blogs
    Fantasy Soft(RSS)
    Freeman的Blog
    hosander的专栏
    PHPEye.com
    web2.0 focus(RSS)
    开发视界[专家专栏](RSS)
    歪脖·坑(RSS)
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 Delphi for PHP 评测收藏

    新一篇: Zend Framework手册中文版PDF下载[2007.06.03编译,ZF1.0.0RC1] | 旧一篇: 关于三种主流WEB架构的思考

    Delphi for PHP 评测
    Haohappy  haohappy AT msn.com
    转载请注明来源:http://blog.csdn.net/haohappy2004

    为书写方便,下面将Delphi for PHP简写为D4P。

    其实现在写这篇评测稍早了一些,因为这个IDE以及使用的开发框架Vcl for PHP都才刚推出不过一个月。

    首先请先回顾一下关于三种主流WEB架构的思考 一文所说的三种WEB开发方式,使用D4P开发是典型的第三种方式,就是IDE+基于控件、事件驱动的开发框架。

    我根据D4P的DEMO,设计了两个程序,一个是普通的表单提交-返回程序,然后我所熟悉的QuickForm进行了对比;另一个是数据库程序,就是查询一个MySQL表,然后返回,另外试用DataGrid列出数据。

    在写测试程序的过程中,除了熟悉和体验一下IDE的使用,其实我更感兴趣的是Delphi for PHP这个IDE所采用的PHP开发框架――Vcl for PHP(http://www.qadram.com/vcl4php/)。在我使用D4P之前,我就猜测Codegear在易用性上一定不错,这个猜测得到了证实。但是Vcl for PHP是否是一个优秀的PHP框架? 如果没有优秀的开发框架,不能保证程序的质量和效率,那么光靠个优秀的IDE,开发出来的程序一定是中看不中用,没人敢用。

    基于这个想法,我认真研究了一下VCL for PHP(简称为V4P)。这个框架2007年3月27才开源的,也就是说开源不到一个月。框架文件位于C:\Program Files\CodeGear\Delphi for PHP\1.0\vcl目录,或者你也可以在http://www.qadram.com/vcl4php/网站上下载到。

    我们可以看到,V4P使用了很多我们熟悉的PHP开源类库,例如ADODB、Smarty、Xajax、Nusoap等等,还使用了qooxdoo这个JS GUI工具包。也可以看到一些似乎还未完成的类库,如对Google Map的调用(见vcl\google目录),对PHPBB论坛的调用等。这下你明白了吧,为什么D4P这么强大,呵呵,因为它站在巨人的肩膀之上啊。不过这也带来了一个问题,太依赖别人的类库,缺乏自主性,对于代码质量带来了不可控因素。

    对于第一个测试程序,很简单,就是一个表单提交数据,然后返回响应。大家可以自己参照Demo来写,我测试了一下效率,大概执行时间在0.5秒左右,嗯,算是非常慢。

    对于第二个测试程序,也就是数据库操作程序,是我比较重视的,下面来详细介绍一下。

    D4P目前支持MySQL和Interbase两种数据库。我打开D4P的安装目录看了一下,原来数据库访问层使用的是ADODB(http://adodb.sourceforge.net)这个开源类库。也就是说理论上将来D4P可能支持非常多的数据库,因为ADODB实在太强大(这里是ADOdb支持的所有数据库:http://phplens.com/adodb/supported.databases.html)。

    D4P提供了五种数据库访问控件(Data Access:Datasource,Database,Table,Query,StorProc—数据源、库、表、查询、存储过程)和三种数据库控制控件(DBGrid,DBPaninator,DBRepeater—表数据列表、分页、表数据或记录集列表)。

    DBGrid的设计还是很精巧的,前端采用了AJAX,显示很漂亮,还可以直接更新。但显示速度较慢。老实说这样一种东西对于管理后台数据库似乎中看不中用,如果是数据库管理,我们还是使用熟悉的更为强大的PHPMyAdmin吧;如果是提供给用户的管理页面,我们要定制很多页面效果,DBGrid又不满足要求(太复杂了,而且都封装起来了,修改效果不如自己写)。用于给客户作展示倒是挺适合的。

    我们再来测试一下代码的执行速度。任务很简单,我们从两个表中分别读取30条记录,然后分别两个生成DataGrid:

    测试代码非常简单:

    <?php
    $time_start 
    microtime_float();
            
    //Includes

            
    require_once("vcl/vcl.inc.php");
            
    use_unit("forms.inc.php");
            
    use_unit("dbgrids.inc.php");
            
    use_unit("dbctrls.inc.php");
            
    use_unit("db.inc.php");
            
    use_unit("dbtables.inc.php");
            
    use_unit("extctrls.inc.php");
            
    use_unit("stdctrls.inc.php");

    $time_start2 microtime_float();

            
    //Class definition
            
    class Unit2 extends Page
            
    {
                   public 
    $DBGrid2 null;
                   public 
    $dsfeedentry1 null;
                   public 
    $tbfeedentry1 null;
                   public 
    $Query1 null;
                   public 
    $DBGrid1 null;
                   public 
    $dsarticle1 null;
                   public 
    $dbhappycms21 null;
                   public 
    $tbarticle1 null;

            }

            global 
    $application;

            global 
    $Unit2;

            
    //Creates the form
            
    $Unit2=new Unit2($application);

            
    //Read from resource file
            
    $Unit2->loadResource(__FILE__);

            
    //Shows the form
            
    $Unit2->show();

            function 
    microtime_float(){
                    list(
    $usec$sec) = explode(" "microtime());
                    return ((float)
    $usec + (float)$sec);
            }

    $time_end microtime_float();
    $time_lib $time_start2-$time_start;
    $time_total $time_end $time_start;

    echo 
    "Loaded libs in $time_lib seconds and all processed in  $time_total seconds";
    ?>

    输出结果:

    Loaded libs in 1.1935691833496 seconds and all processed in 2.1492249965668 seconds

    结果告诉我们:读取两个表并且生成DataGrid总共花费了2.14秒,其中加载公用类库用了1.2秒。

    我用PHP程序员最常用的数据表读取及输出结果的代码进行同样功能的代码重写,即用两个mysql_query(‘SELECT * FROM table limit 0,30’)得到结果并用while循环输出,消耗时间为:
    All processed in 0.31938099861145 seconds

    0.3秒对2.1秒,相差7倍,可见D4P的DataGrid效率相当低。注意这是测试的是服务器端数据查询的执行效率,实际上在浏览器端的显示也有明显延迟,可能qooxdoo的效率也不高。

    D4P除了有自带的基于qooxdoo的DataGrid,还可以与PEAR的DataGrid直接集成,就是一个正常的HTML表格界面,相对比较容易扩展。

    其它:

    小结一下:

    D4P的优点:

    • 界面清爽漂亮,IDE速度较快。操作简便,继承了Delphi的传统。
    • 控件相当齐全,所有的表单和常见的HTML控件,还有不少特色组件,比如HTML在线编辑器、进度条、日期选择器、日历、树状菜单等等。还有数据库和WEBServices控件等。可以满足大部份情况下设计的需要。
    • 代码可复用性高。

    D4P的缺点:

    • 只支持Windows平台;光是这一点,就无法与ZDE相抗衡,不过在中国问题不大,因为在中国大部份人都在Windows下开发项目,在Linux下布署。
    • 生成的代码执行效率不高。

    这是个主要缺陷,具体看上面的测试数据。如果是“展示型”的站点,例如门户网站的新闻频道,肯定不可能用这样的框架来开发。因为我们要对服务器端的脚本和生成的HTML/JavaScript都要精确控制,减少效率和带宽上的浪费。

    将来我也许会拿D4P来开发OA之类的企业内部应用。这种项目界面控件比较多,需求比较复杂,变化比较多,但系统负载不大,对效率要求不高。

    • VCL for PHP以大量开源类库为基础,代码质量不能保证完全可控制。

    Vcl for PHP无法对其使用的开源类库的代码作统一的质量控制,所以我对这样一个工具执怀疑态度。我喜欢程序的每一部份都是“可控”的,过多的封装和过多的依赖其它第三方类库让我对其内部产生不信任。

    当然,Vcl for PHP作为开源项目才诞生一个月,还有很大发展空间,让我们过段时间再来关注一下,也许到时会有惊喜出现。

    发表于 @ 2007年04月27日 10:20:00|评论(loading...)|编辑

    新一篇: Zend Framework手册中文版PDF下载[2007.06.03编译,ZF1.0.0RC1] | 旧一篇: 关于三种主流WEB架构的思考

    评论

    #goukixiao 发表于2007-04-27 16:02:19  IP: 218.79.82.*
    HAOHAPPY想的太好了,不适合国人的……
    d4p的中文支持那叫一个差
    #xalion 发表于2007-04-28 10:00:35  IP: 219.144.162.*
    1.它生成的代码可以在linux 下运行
    2.最新版已经对中文支持的非常不错了。
    #sleetdrop 发表于2007-04-28 16:46:36  IP: 61.135.152.*
    可能比较适合做一些访问量不大的日常应用的管理系统什么的.
    如果是大访问量的站点这样的做出来的东西基本不可接受.
    #chengwei_xj 发表于2007-04-29 10:22:12  IP: 61.48.20.*
    “我喜欢程序的每一部份都是“可控”的”,我对这一点持反对态度,这是软件开发人员的通病,凡是都要自己亲历亲为。个人认为这是个坏习惯
    #lextm 发表于2007-04-29 13:23:47  IP: 58.32.188.*
    “Vcl for PHP无法对其使用的开源类库的代码作统一的质量控制”
    这个也是值得商榷的。如果CodeGear发现了其他类库的bug,一定会参与到解决之中,毕竟这也是Delphi for PHP的一部分。

    另外对PEAR的支持已经放到了VCL For PHP的最新版本中。
    2007-05-12 17:29:49作者回复
    十多个类库,CodeGear怎么顾得过来..这些类库不断更新,Vcl for PHP就得跟着不断更新,可以想像工作量有多大.
    #hawk_e2e 发表于2007-04-29 17:02:42  IP: 121.32.45.*
    能否问个弱弱的问题:DELPHI FOR PHP可不可以开发报表啊?
    #xieguolun 发表于2007-05-07 21:12:10  IP: 221.10.241.*
    对中文的支持不如,在生成的XML文件中不支持中文。
    #phpres 发表于2007-07-02 14:39:45  IP: 125.78.48.*

    转了这文章,呵呵。

    ---------------------------------------------------------------
    Delpi For PHP 下载/视频/破解/交流 - PHP开发资源网 - vcl4php专区

    地址: http://bbs.phpres.com/forum-20-1.html
    #dayri 发表于2007-08-11 14:07:09  IP: 218.17.69.*
    Delphi For PHP 才刚刚是个开始,想想当年的Delphi一开始也存在很多问题,后面不都解决了吗. 我就是不想用微软的东东.
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © Haohappy