|
转载自 http://training.csdn.net/subject/php.htm
PHP选择篇:
PHP:路在何方?
1995年时,Rasmus在用PHP写他的个人主页;今天,PHP成为风靡全球的脚本语言,越来越多的站点选择使用PHP,连Yahoo都放弃了自己的脚本而改用PHP支持它的网站。可以说,PHP是一个奇迹。现在,就让我们透过这个奇迹,来看看PHP的成功之道。
Web编程语言之我选择我喜欢
本文通过对几种常用的Web编程语言进行了比较,最后得出结论:用PHP进行Web开发是首选,开发不采用现有MVC框架,采用PHP+显示模版的方式,快速干净的开发应用。
PHP开发框架的现状和展望
随着Ruby on Rails的火爆,PHP这个流行的Web应用脚本语言也出现了大量的新一代开发框架。与此同时,国内PHP开发者也开始紧跟国外发展,推出了不同的开发框架。
PHP入门篇:
PHP新手上路 (一) (二) (三)
PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。
PHP大型Web应用入门
这里所说的“大型”应用不是说像Google、eBay、Yahoo这类大型网站的具体实施,我也没有意图劝说读者放弃自己的概念和信仰,只是希望大家的系统可以运行得更快更流畅,可以承载更多的用户在线,希望可以给PHP的初学者一点帮助。
五种常见的PHP设计模式
设计模式只是为Java架构师准备的--至少您可能一直这样认为。实际上,设计模式对每个人都非常有用。如果这些工具不是 “架构太空人” 的专利,那么它们又是什么?为什么说它们在应用程序中非常有用?本文将为你诠释。
PHP5中PDO的简单使用
PDO(PHP Data Object)是PHP5新出来的东西,在PHP6都要出来的时候,PHP6只默认PDO来处理数据库,将所有的数据库扩展移到PECL。那么默认中就没有了php_mysql.dll之类,那怎么办捏?
PHP评价篇:
PHP做Web项目的优缺点
在CSDN的论坛上,有一网友说道类似问题,他们的项目考虑使用PHP来做,我进行了回复,描述了PHP做Web项目的优点,同时也考虑到PHP跟ASP.net的对比,参考文后的连接。通过比较,让我们更清楚的认识PHP。
不一样的项目,不一样的PHP
在首页看到一篇文章 PHP做Web项目的优缺点 , 自己也来废话几句。其实PHP是一个很优秀的工具,它可以简单,也可以复杂。不一样的项目,应该用不一样的PHP。
续:php做web项目的优缺点
偶写的《PHP做Web项目的优缺点 》一文被放到了CSDN的首页上,收获了很多批评很很多比较有见解性的意见,比如Easy写的《不一样的项目,不一样的PHP》。
ASP、JSP、PHP 三种技术比较
目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。 本文通过三种动态语言的比较,让我们更加深入的认识PHP,认识动态语言。
PHP深入篇:
7 种流行PHP IDE 的比较 (一) (二) (三)
本文发掘集成开发环境(IDE)的所有用途,并比较 7 种流行的 IDE 的成本和优势。编写关于 PHP 的系列文章让我更加深刻地了解了 PHP 开发人员的世界。我和许多 PHP 程序员交谈过,最令我惊奇的是只有很少的人使用 IDE。……
PHP程序员的优化调试技术和技巧
使用调试器,可以设置断点并查看 PHP 代码到所设断点之前的浏览器输出。然后可以继续代码的执行并查看到下一断点之前的浏览器输出,然后再到下一个,直到 PHP 脚本完成。
PHP中Cookie及其使用
Cookie技术是一个非常有争议的技术,自经诞生它就成了广大网络用户和Web开发人员的一个争论焦点。那么Cookie 技术究竟怎样呢?是否真的给网络用户带来了个人隐私的危害呢?
PHP职场面试篇:
PHPer为什么被认为是草根?
PHPer为什么被认为是草根?——从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务。同时,作为针对Web开发量身定制的脚本语言,PHP一直秉承简单、开源的思想,这也使得PHP得以快速的发展,并且大力地推动Web2.0的出现与发展。
我自己想的几道入门PHP笔试题
摘要:我自己想的几道入门PHP笔试题,没有什么意义,只是自己随便想想,算是好玩。
php面试题目及其解答
题目去年我去某公司面试的时候做的(含php+mysql),欢迎大家评评,并改正解答中的错误...
PHP 和 ASP.net 的比较
PHP 与 ASP.NET 正面交锋
从 PHP 迁移到 ASP.NET
ASP.NET和PHP性能对比整理和翻译
相关链接
PHP创始人所欣赏的7套PHP产品
FLOSS Weekly是一个创办于今年4月的播客节目,每周播出。其主要内容是和一些媒介产品创始人、创造者(尤其是来自开源社区的人们)讨论媒介最新进展和趋势。
微软与Zend达成PHP合作关系 侧翼包围Linux
微软的技术战略家希尔夫说,与Zend的合作将是为期多年、分多个阶段的合作伙伴关系,将确保PHP这种最流行的开放源代码Web应用软件编程语言能够在过去以及未来版本的Windows Web服务器软件上运行。
PHP正式进入IIS微软与Zend携手推动PHP语言发展
运用系统工程方法,结合银行业务软件的特点,为银行业务软件的测试建立指标体系,用层次分析法确定各指标的权重,并用可能-满意度法计算各指标的满意度,最后通过计算综合满意度对测试作出评价。
观察:为何近来PHP在IT业界越来越火
笔者从事php开发3年有余,自从去年下半年以来,发现无论在各大论坛还是招聘网站招聘php人才的广告越来越多,而程序的工资也节节上升。记得03年到04年php开发的平均工资是3000左右。……
访PHP核心缔造者Zend创始人& CTO Zeev Suraski
随着互联网开源潮流的迅速发展,全球IT业进入新的成长期。日前,Zend公司CTO,PHP的构建者之一Zeev Suraski先生访华,接受记者采访,就PHP新产品、Zend公司的发展与未来发表了自己的看法。
[ 本帖最后由 hooi1983 于 3-4-2007 04:58 PM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 3-4-2007 04:21 PM
|
显示全部楼层
PHP:路在何方?
转载自 http://blog.csdn.net/KBUG/archive/2003/10/06/17095.aspx
PHP4:奇迹背后
1995年时,Rasmus在用PHP写他的个人主页;今天,PHP成为风靡全球的脚本语言,越来越多的站点选择使用PHP,连Yahoo都放弃了自己的脚本而改用PHP支持它的网站。可以说,PHP是一个奇迹。我一直认为,任何奇迹背后都有它的原因。现在,就让我们透过这个奇迹,来看看PHP的成功之道。
1 简单易用
PHP的入门门槛很低,它对使用者的要求微乎其微。学过C语言的人,使用PHP几乎不需要什么时间。它们的语法是如此相似,以至于我常常想,是不是在C语言变量前加个$就能改成PHP。这使得大量C程序员在网络脚本中选择了PHP。另外,比起ASP的组件系统和Java庞大的类库来,PHP的函数库要好学多了。在编程风格上,PHP更是自由,你可以使用N种风格来写你的脚本程序。这些特性使得PHP成为初学者的首选语言。抢占初学者市场是很重要的策略。如同任何人都会对自己的初恋记忆犹新一样,人们往往会对最初学习的语言有很深的感情。即使后来自己成长了,改用其他语言了,还是会时时记起最初学习的语言。在这点上,PHP做得很出色。
2 剪裁得当
PHP开发组是最了解网络的一群人,他们非常清楚用户要的是什么。PHP就是要做一个出色的网络脚本语言,而且,它只是要做一个网络脚本语言。PHP提供的函数集在网络方面相当强大,而且重点均专注于网络应用。像PHP中的无组件文件上传,超多数据库支持等特性都表现出这个特点。顺便说一句,PHP甚至支持ACCESS数据库。专注使得PHP在网络上表现出极其优秀的性能。有失才能有得。
3 支持强大
PHP有强大的OpenSource团体支持,在网络上有数以万计的开源代码。你可以整合几个现有程式来实现你的应用,也可以分析大师级的代码来得到提高。PHP还有很多扩展性的项目来增强PHP在某个方面的功能。像注重编程规范化和代码重用的PEAR,提供可编译模板技术的Smarty,甚至开发桌面程序的GTK。
分析完这几个理由,我们可以看出,PHP的成功得益于PHP开发组的战略眼光。PHP提供了一个最小工作集,使用户能用最简单的方式高效地完成自己需要的应用。这正是初学者需要的。然后它通过方便的扩展来提供各个方面的解决方案,这样,你只需要学你要用到的那个领域的东西。当你涉及的领域越来越多时,你的水平也随之提高,当你熟悉了大多领域时,回头看看,会发现不知不觉已到山腰。PHP也提供了我们一种学习态度。
ASP.net+J2EE:风雨欲来
网络脚本界的革新浪潮由Microsoft的ASP.net首先发起。在ASP.net中,有一个很吸引人的东西——事件驱动机制。这在桌面编程中是很普通的概念,而在脚本编程中事件驱动意味着对服务器端的脚本(如PHP、JSP、ASP)和客户端的脚本(如JavaScript和VbScript)进行封装,使之协同工作。这样一来,编程就会变得异常方便。在.net环境中的事件驱动还有一个优势,就是你甚至可以不会任何服务器端脚本和客户端脚本,因为在ASP.net中,是可以直接使用C#这样的语言的——连$都不用加。这为MS阵营的传统程序员转向网络开发铺平了道路,同时,也使PHP在初学者市场上受到很大的打击。可以预见,以后的传统程序员转向PHP的将大为减少。不过ASP.net最大的问题在于它只能在Windows上运行,而现在大陆正在大力发展Linux。这使得PHP的生存空间似乎宽了点,但是——让我们来看看Java吧。
Java也是一个奇迹,1995年发布第一个版本,现在形成三个版本,分别覆盖嵌入式系统(J2me)桌面程序(J2se)和服务器(J2ee)三大应用领域。更重要的是,Java得到了绝大多数程序员的认可,现在世界上最出色的计算机书籍多是以C++或者Java作为描述语言的。Java几乎像C一样,成为一种信仰。所以,我们不要妄想Java阵营的程序员会转向PHP。同时,在同是开源和跨平台的Java面前,PHP丢掉了不少优势。J2ee中的JSP又在初学者市场对PHP造成相当的压力。
在曾经使PHP成功的初学者市场、易用性和开源支持等方面都受到挑战,而随着机器性能的不断提高,大家对效率的要求渐渐降低的情况下,可以说,PHP要在ASP.net和J2EE的狭缝中生存并壮大,是一件很不容易的事情。
而PHP本身还有不少问题。像低层用户过多。大量的开发者处于入门阶段,不知道如何提高自己,导致大量开源代码不规范和低效率,而又会又下一批初学者从这些糟糕的代码中学习,如此递归。另一方面,高阶用户却因为PHP的面向对象特性不完整等原因而不得不转向其他语言以开发大型应用。
PHP5:浓浓咖啡味
PHP开发组在今年年中发布了PHP5的BETA1,我们可以从中看见PHP的反击。首先,PHP4的开发仍然马不停蹄,而且我们可以肯定,PHP4的开发还将持续很长一段时间。这样做的目的是巩固既有用户,同时在将来的PHP4版本中逐渐融合部分PHP5的新特性,实现PHP4到PHP5的平滑过渡。
再来看PHP5的变化。在PHP5中,我们看到了太多Java的影子。OO体系几乎是COPY的Java的,这保证了PHP高阶用户不流失,使得他们能方便的使用最新的技术体系来架构自己的应用。另一方面,也为Java程序员使用PHP提供了方便,虽然这样的情况可能比较少。在完善了OO体系后,PHP具备了真正进入企业级市场的能力。然后PHP5也添加了不少自己的东西,像__get,来使这个体系更易用。不知道的是,这杯cappuccino是否会像Java般受欢迎呢?
从PHP5的改变中,我们看出了PHP将来的方向。一是和JSP竞争,争取在某一些方面取代JSP,成为粘合JavaBeans和Servlet的胶水。这要求PHP和Java之间建立更为紧密的关系。Zend小组正在参与JSR规范的指定。这个规范将使得你可以在PHP中直接new一个Java对象并调用它的方法。这样也能使PHP更快的进入企业级市场。另外,如果PHP编写的脚本能被直接编译成Bytecode在Jvm上运行的话,PHP的前景会好很多。另一个方向是做Java和.net间的集成,在一些大型的应用中整合已有资源。PHP4中我们已经可以调用com组件和Java对象,相信在将来PHP5将对此提供更多的支持。
不管怎么样,无论是和J2ee和.net竞争还是融合,PHP要走的,将是一条满是荆棘的路。不过既然PHP已经一路风雨地走到了今天,我们有什么理由不相信它能走得更远呢? |
|
|
|
|
|
|
|

楼主 |
发表于 3-4-2007 04:23 PM
|
显示全部楼层
Web编程语言 之 我选择我喜欢
转载自 http://blog.csdn.net/flynetcn/archive/2007/03/20/1534676.aspx
1. Python+Web
这几天就憋在房子里搞Web编程,进行语言的选择、框架的选择,把头弄得都晕了。因为对Python比较熟悉,先看Python下进行Web编程如何。
Python下的Web框架是最多的,越多就越不容易挑选,你要对每种框架都进行研究后才能给出结论,最后选定Django进行了皮毛的研究。发现真要开发起来还是比较烦人的,涉及的东西太多了。后来又看了看其他轻量级的框架如mod_python,webpy等等感觉容易上手一些。
这只是从技术上进行可行性分析,但想到国内支持Python的Web主机,简直是少了又少,从商用、环境、成熟度角度来看,我们开发短平快的项目不适合用Python。
2. Java+web
既然Python不太适合,那Java如何?Java没的说,那么多人用他肯定有的长处,对我来说呢?我是从C++/Delphi过来的,对Java也不陌生,但总的来说不算太熟,特别是对于J2EE那恐怖的大框架,里面的类库简直太恐怖了,你为了完成一个简单的功能,得用几十个类才能完成。我曾用 Struts+Hibernate开发过一个简单的用户自助服务系统,光里面的配置都快把人弄疯了。你正在做相关项目的时候可以费点劲把这些知识拾起来,把开发工具(Eclipse)搭起来,但时间一久就差不多忘了,又得在网上好一番狂搜。就说Eclipse吧,我们要用Hibernate的插件来做 Hibernate的配置,数据库的映射等,第一次配置的时候是从按照网上找的资料进行的,等项目开发完了,大家都忙别的事情去了;几个月后要将数据库移植到Oracle,这时候再来搭环境吧,由于在这几个月之内大家都在用其他的语言开发,早就忘了怎么搭了,又得找半天才把环境搭起来。环境搭起来了吧, Hibernate是怎么一回事又忘了,还得拿出《精通Hibernate》进行一次学习。
换个角度,如果我们一直都在用Java开发,这个不是问题,但很多像我们一样的朋友一直在Win32上开发而现在要转到Web下的,并且时不时还要重操旧器(Win32),Java的大框架对我们来说是个很大的“山”。实话来讲,对于小的用于自己产品的项目来说,不用计较开发语言多强大,只要够用就好。因为引进新的开发语言或工具,势必造成人力资源的浪费,而为自己干活不能不考虑成本。结论是:Java框架太大、太复杂,我们要花太大的代价、精力来“利”这个“器”,如果有更好的选择,暂不考虑 Java。
3. ASP.net+web
那剩下来的还有什么选择呢?ASP,ASP.Net,C#?对于此ASP类的我是不打算去用的。我也知道有微软强大的Visual Studio开发工具,ASP类的Web开发会如虎添翼,并且ASP类语言入门难度很低,但考虑到我们的产品必须要支持类Unix平台,只这一条就不用考虑ASP类了。但是,具体情况具体分析,对于不要求跨平台的项目我们还是可以选择ASP的。
不选择ASP的另外一个理由是,产品的自身安全性。虽说现在都是卖服务不卖产品,但具体到不同的商业模式可能就不可一概而论了。而ASP本身好像不能进行代码的加密,也就是说你给客户部署的应用,别人能直接修改你的ASP代码。这点我从网上找到的一些信息可以隐约感觉到,一般一个好的网站出来以后,如果用的ASP,那么类似的网站很快就会复制;我们也可以从网上下载到现成的整站代码,几乎不用修改就可以使用了。如果我们的产品采用ASP开发,那竞争对手不就可以直接拿过来换张皮就用,加密好像不怎么好做啊。当然上面所说的ASP加密问题,这个我没具体研究,也许有解决的方案吧。
结论:由于ASP不支持跨平台,没有足够的安全保障,不能选择ASP。
4. PHP+web
4.1. 选择学习PHP
那剩下的选择就不多了,最终目光放在了PHP上。
PHP 是个动态脚本语言,由于先学的Python,对动态语言的特点比较熟悉,看到PHP后觉得和Python很类似,有种亲近感。这可能是由于我在比较好的时机看到了PHP,PHP4好像是不支持面向对象的,而我看到的PHP已经到5.2了,全面开始支持面向对象;并且PHP本身就是为Web设计的,你都不能像Python一样单独写个能脱离Web独立运行的程序(也许可以,我没具体研究),对Web的支持应该相当好,怀着对PHP的好奇我进行了PHP的学习。
具体的部署从网上很容易得到,我的实验环境是PHP5.2+Apache2+MySQL。
PHP学起来是很快的,学语言我有经验,一般情况都是从上到下,再从下到上。从上到下是说,先总体了解语言本身,具有什么样的品质、特点;我们拿它能做什么,不能做什么,合适做什么;是面向对象还是面向过程;应用的是否广泛;成功的案例有哪些。只有对总体特性了解后才能决定我们到底学不学,才能清楚如果要学,凭我现在的经验基础用多长时间、什么样的方式来学。
从下到上是说,在具体学习一门语言的时候,先学习语言本身的语法结构。只要有其他语言的基础,这个往往很简单,无非是变量、常量、表达式、流程控制、函数、类、继承、对象、内存管理。我学习PHP只用了两小时,编了几个小程序进行测试后就基本搞定了。
掌握了基本语法后,再学习语言的核心:类库、框架。不同的语言缺省带的类库是不同的,有的多有的少。Python就很多,PHP也不少,Java、.net 非常全。类库、框架才是一个语言的精华,掌握了语言常用的框架才算掌握了语言本身。当然,语言的学习最好和实际应用结合起来,可以一边学一边用,这样学习的更扎实,速度也更快。
学习的时候最好能多看别人写的代码,每种语言都不乏很好的教程和代码实例,尽量利用网络资源。
4.2. PHP开发工具
还有最后一点,学习一门语言必须要选择得力的开发工具,不然你的开发效率是上不去的。Java就用Eclipse、JBuilder,.net用 Visual Studio,Python用ActivePython的PythonWin,PHP呢?PHP就得用Zend,但Zend是收费的并且还很贵,看情况了,允许就用Zend,不允许就用EditPlus,PHPDev等。
4.3. PHP应用
PHP 能直接嵌入到Html中,用法和ASP差不多。也就是_COOKIE,_SESSION,_REQUEST,这给动态网页开发提供了很方便的特性,我觉得这基本上就够用了,但实际工作时你必须考虑分工问题,也就说说把程序员和美工的工作分开,程序员专注于BussinessLogic,美工负责页面设计,但页面中要展示逻辑处理后的结果,这就涉及到怎么样把处理的结果告诉给Html。按道理说用PHP处理的HTML是可以直接嵌入PHP代码的,我们只需把逻辑处理的代码单独放在一个文件中就可以了,HTML包含此文件,然后用输出的变量结果就完了。但人总是很聪明的,早就看到了这个问题,因而好多人就纷纷提出Web的MVC架构,支持PHP的MVC框架也很多。只要用框架你就得熟悉这个框架,这无疑有增加了我们的学习成本。下面就说说我看过的几个框架。
模版框架Smarty:当然还有其他的模版框架,而Smarty用的较多,下载了一个实际例子:ecshop就是基于Smarty;还有bBlog也基于Smarty。Smarty本身很复杂,但对我们来说就几个常用的功能。Smarty提供了一种模版语言,让HTML设计人员不用懂PHP就可以用PHP处理的结果,他规定了一套标签,只要在HTML中用嵌入Smarty的标签而不用嵌入PHP代码就可以了,这为HTML设计人员带来了方便,不需要学习PHP只需掌握几个标签就好了。
但Smarty标签嵌入HTML后,HTML设计人员如果在开发工具如Dreamwaver(DW)中打开HTML的话,看起来就是乱糟糟的一片了,违背了所见即所得的原则,这时可以下载DW的一个Smarty插件来部分解决这个问题。
Smarty除了这个讨厌的问题外还有很多好的地方,比如可以自动管理页面Cache;可以让用户自己订制显示模板;安全性,防止嵌入的标签对整个程序的伤害;速度据说也相当快,和直接用PHP差不了多少。
Smarty缺点是既然作为一个模板框架我们在开发的时候就要遵守它的规则,在编写逻辑的时候,要不停的assign,assign,assign,但这也算清晰,我们也划得来。结论是:模板框架Smarty是值得选择的。
但也有其他的选择,很好玩的是下面两篇文章,你可以细细品味一下:
超越模板引擎,PHP资源模板——模板终结者
PHP还有其他的Web架构象PHPMVC,ZendFramework,FleaPHP等,这些框架只是实现目标的一种途径,我倒是认为能不用框架最好不用,PHP本身的特色就是轻快,PHP+显示模版的方式已经够了,用最简单明了的方式完成工作不是更好吗?
值得注意的是,不用框架不等于不用代码库,千万不能否认PHP成熟代码库的作用,这在PHP里叫PEAR(PHP Extension and Application Repository:PHP扩展与应用库),可参考《用Pear加速PHP程序开发》。
4.4. 结论
最后得出结论:用PHP进行Web开发是首选,开发不采用现有MVC框架,采用PHP+显示模版的方式,快速干净的开发应用。
5. 总结
上面对几种常用的Web编程语言进行了比较,分析的立足点是我自己的需要,也许能代表一部分朋友的情形吧。
应用于公司开发独立的信息化产品、或其他产品(如硬件设备)的辅助软件产品。
不同的应用选择不同的技术,希望和大家进行探讨。 |
|
|
|
|
|
|
|

楼主 |
发表于 3-4-2007 04:24 PM
|
显示全部楼层
PHP开发框架的现状和展望
转载自 http://blog.csdn.net/heiyeshuwu/archive/2006/12/21/1451202.aspx
引言:
随着Ruby on Rails的火爆,PHP这个流行的Web应用脚本语言也出现了大量的新一代开发框架。与此同时,国内PHP开发者也开始紧跟国外发展,推出了不同的开发框架。
Ruby on Rails催生变革
在RoR流行之前,PHP领域也有不少开发框架,例如Mojavi、WACT、PHPMvc和Seagull等。这些框架虽然也采用了MVC模式、数据库抽象层等技术。但由于当时PHP本身不像现在这样流行,所以这些框架都没有得到大量应用,最终归于沉寂。
而在感受到RoR提供的快速开发能力后,PHP社区像被注入了兴奋剂。各种应用技术和开发框架层出不穷。
新一代框架的诞生
PHP社区在被RoR震晕后,没有陷入过多的争论。而是立即行动起来,开始了新一代框架的设计。首先出现的第一批框架几乎都是RoR的克隆。例如PHP on Trax(连名字都借鉴Ruby on Rails)和TaniPHP、Akelos等。这些框架最大的特点就是力求100%克隆RoR,不管是采用的架构、设计模式,还是使用方法。
这几个框架一开始确实吸引了开发者的注意,但随着开发者的深入了解,这些框架头上的光环逐步褪色。晦涩难懂的架构、糟糕的性能,以及太多的限制,让这些框架难以在实际项目中运用。
此时,许多PHP开发者认为可以借鉴RoR的设计思想,但不应照搬RoR的结构和实现。为此,一些同样推崇快速开发的框架开始在PHP社区出现。这些框架中,CakePHP和Symfony可谓佼佼者。
CakePHP(http://www.cakephp.org/)
CakePHP充满了RoR的影子,从ActiveRecord模式到视图的布局管理都和RoR非常相似。而且CakePHP一开始也尝试实现与RoR 一样的许多东西。但CakePHP的开发团队后来发现PHP语言和Ruby语言存在巨大区别,因此RoR中的许多设计即便能够在PHP中实现,也是缺乏实用价值的。
CakePHP在发展中逐步走出了RoR的阴影,开始探索更能发挥PHP语言本身优势的架构和实现。因此有一段时间CakePHP的API发生了剧烈的变化,以致其他开发者纷纷停下脚步处于观望状态。
但由于前期一些架构的不合理和对RoR太多的模仿,导致CakePHP的核心部分越来越难以理解,运行性能也不尽人意。而且CakePHP将一个庞大的数据库操作对象作为所有业务对象的基础。这虽然利于快速开发,但却导致对业务逻辑对象的测试非常困难。
对于较小型的项目,CakePHP非常理想。出色的快速开发能力、丰富的API和详尽的文档都可以帮助开发者很快完成工作。但随着项目规模的增加,CakePHP的局限性也变得突出。
Symfony(http://www.symfony-project.com/)
Symfony是一个非常成熟的框架,大量利用了已有的开源项目。Symfony使用Mojavi的核心代码实现了框架的MVC模式,利用Propel 作为数据库抽象层。Symfony不仅功能强大,而且对Ajax有全面的支持。加上官方网站提供的大量文档和教程,并拥有一个活跃的社区,因此受到许多开发者的欢迎。
但是,Symfony最大的问题也在于使用了太多风格迥异的开源项目来组合成框架。由于Mojavi和Propel本身都相当复杂,因此Symfony的结构非常复杂,难以理解和学习。
不过对于希望选择一个框架作为企业内部系统基础架构的企业来说,Symfony的成熟度、丰富的文档和活跃的社区都是值得考虑的。毕竟企业内部系统更为看重的是稳定性和长期的支持。
商业利益与大道至简
看到PHP开发框架的潜在商业价值后,Zend.com联合IBM宣布将要推出一个真正能够发挥PHP优势的开发框架。一时间,这个消息在整个PHP社区引起了地震。大家都开始期盼这个具有“官方”背景的开发框架能够为PHP开发者指出一条正确的道路。
不过世事难测,就在Zend Framework团队公布几个代码片断后,立即就有开发者指出这些代码片段是不可能实现的。事实证明这些代码片段不过是美好的理想。限于PHP语言本身的能力,Zend Framework最终没有实现当初承诺提供的类似RoR中ActiveRecord模式的实现品。
Zend Framework(http://framework.zend.com/)
Zend Framework大量应用了PHP5中面向对象的新特征:接口、异常、抽象类、SPL等等。这些东西的应用让Zend Framework具有高度的模块化和灵活性。同时,因为严格遵循“针对接口编程”和“单一对象职责”等原则,让Zend Framework很有希望成为一个出色的企业应用开发框架。
但不幸的是Zend Framework直到今天,也没有做出更多的突破。在使用Zend Framework开发时,框架对应用程序自身最重要的领域逻辑分离没有提供任何帮助。如果希望开发出真正健壮的企业应用,仍然需要开发者做出相当的努力,并且在Zend Framework之上建造自己的基础设施。
针对这点,批评者指出Zend Framework虽然大量应用PHP5的新特征,但却没有将这些相对于PHP4的优势转化为能够为开发者提供帮助的东西。
对于简单和小型的项目来说,Zend Framework不但不能提高开发效率。反而因为在框架中应用了大量面向对象设计和PHP5的新特征,对开发者提出了更高的要求,间接增加了项目的开发成本。而对于较大的项目和企业应用,Zend Framework倒是一个不错的基础。但要创建一个成功的应用,仍然需要付出不小的努力。并且要时刻注意Zend Framewok的性能问题。
Code Igniter(http://www.codeigniter.com/)
Code Igniter可以说是一匹黑马。Code Igniter出现之时正是Symfony和CakePHP大行其道、Zend Framework万众期待的时刻。可凭借着独特的设计思想,Code Igniter吸引了大批开发者。这点从其火爆的官方论坛就可得到证实。
Code Igniter推崇“简单就是美”这一原则。没有花哨的设计模式、没有华丽的对象结构,一切都是那么简单。几行代码就能开始运行,再加几行代码就可以进行输出。大部分日常开发中用到的东西都可以立即找到,并且可以很容易的使用。Code Igniter可谓是“大道至简”的典范。
但是,Code Igniter本身的实现不太理想。内部结构过于混乱,虽然简单易用,但缺乏扩展能力。因此在发展到1.5系列版本时,作者不得不通过增加各种hooks来为框架提供扩展能力。
国内PHP开发框架
国内虽然过去也曾有开发者发布过一些框架,但这些框架要么太过简单,要么和某一类型的应用紧密耦合,缺乏通用性。直到进入2006年,随着PHP在国内的大量应用和追捧,真正的国产PHP开发框架才陆续发布。
FCS(http://fcs.org.cn/)
FCS是从Java的Struts结构移植过来的中文PHP开发框架,使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,借鉴了国外一些不错的思想,尤其是Java框架方面,因此熟悉Java的开发人员相对比较容易上手,其模版引擎、缓存机制、认证机制和扩展性方面均表现不凡。
在借鉴国外优秀思想的同时,FCS也更多地考虑了国内的应用开发需要。PHP4兼容、完全支持UTF-8,以及PATHINFO支持等,更加有利于国内的主机环境和开发需要。秉着易用和易扩展的原则,FCS采用容易理解的项目、模块和操作机制加上内置的一些自动化操作方法,让应用开发变得更加简单,其功能可以通过基类库以及各种插件的形式灵活扩展,从而满足日益增长的业务需求。正是因为具备良好的开发结构,使得FCS在开发大型应用的时候并不会显得有很多障碍,基于构件的方式,以及配合框架的项目管理机制同样可以让你在处理大型应用的时候一展所长。
FCS力求精简的代码和全中文化的文档、注释,有利于国内PHP开发人员学习和掌握,不过根据目前的情况来看,官方的文档和社区支持目前还比较缺乏,而且对Ajax的支持还不够全面,因此国内的应用成熟度还不够。
FleaPHP(http://www.fleaphp.org/)
FleaPHP从发展上看,是一个具有一定历史的框架。在过去三年中,FleaPHP是作者发布了从PFC1到PFC3系列和flea1试验框架后,推出的第一个真正成熟、稳定的开发框架。
与许多其他框架不同,FleaPHP设计之初,就是围绕快速开发和充分利用PHP自身优势两个重点展开的。因此FleaPHP最大的特点就是极高的模块化程度和扩展能力。
FleaPHP框架的核心非常小,但通过灵活的配置,可以组合出各种类型的基础架构。对于简单的脚本页面,FleaPHP不需要载入MVC模式,只需要为应用程序提供业务逻辑和数据库服务。而对于复杂的应用程序,FleaPHP可以完成从MVC模式调用、访问控制、数据验证到文件上传、图片处理等各种各样的任务。
正是因为这种出色的定制和扩展能力,FleaPHP真正接近了“满足从简单应用到企业开发的各种需求”这个目标。而且与许多其他框架不同,FleaPHP是一个完全在实际开发中精炼出来的框架。因此伴随着FleaPHP的发展,各种各样的实际应用也相继出现。在FleaPHP官方网站上,可以看到各种各样的实际应用。从最简单的企业宣传网站,到复杂的社区网站、企业内部系统等等,不一而足。
FleaPHP作为一个完全国产的框架,具有完全中文化的文档、代码注释,并且在扩展功能上也注重考虑国内开发者的实际需求。因此相对于国外的各种框架,FleaPHP更容易被国内开发者所接受。
但是,也正因为处在国内,FleaPHP面临比国外同行多得多的困难。缺乏足够的贡献者、无礼的责难,以及充满怀疑的眼光,这些都让FleaPHP的开发团队成员需要更多的奉献精神。而且由于缺乏足够的贡献者,FleaPHP框架目前在文档和扩展功能方面,与其他成熟框架相比还有不小的差距。
并且与其他所有的PHP开发框架一样,FleaPHP也没有找到帮助开发者分离应用程序领域逻辑的途径。虽然有指导文档,但对于初级开发者来说,一个可以拿来就用的领域逻辑基础会显得很实用。
反思与进取
RoR带来的冲击波还远为平息,但PHP开发者们已经在开始反思一味追随RoR的脚步是否真的能够为PHP开发带来质变?
RoR之所以能够取得如此巨大的成功,除了RoR本身的设计思想外,还有一个重要原因就是RoR充分利用了Ruby这种语言的特长。将Ruby动态语言的优势发挥得淋漓尽致。而在PHP中如果只是单纯照搬RoR中设计,则要处处遇到PHP语言本身的限制。为了绕开这些限制,开发者不得不用一些难以理解的技巧来解决问题。但这样一来通常会导致框架的结构变得晦涩难懂、性能受到损害。
在这种反思中,Code Igniter、FleaPHP等框架就是对这个问题的最好回答。只有充分利用PHP语言本身的优势,才能真正让PHP开发变得更简单、更有趣。
发展到今天,各种PHP开发框架虽然具有各自的特色,但几乎都是为了提高开发效率而努力。但是,虽然其中部分框架注意到了提高应用程序可维护性的问题,但都没有为领域逻辑分离这个至关重要的问题提出解决方案。而这正是这些框架在未来的发展目标。
对于简单的Web应用和复杂的企业应用,两者之间的差别就注定了采用一种固定的架构是无法满足需求的。因此像FleaPHP这样能够提供自定义架构能力的框架,可以让开发者尝试用一个框架的不同组合来解决从简单到复杂的不同程度的需求。
未来,PHP将成为Web开发领域中越来越重要的平台。因此我们相信会出现更多更好的开发框架。虽然作为开发者来说,并不一定需要采用某一个框架来解决问题。但正是因为这些不断出现的框架,我们对使用PHP开发Web应用的理解和把握得到了一次次的推动。 |
|
|
|
|
|
|
|

楼主 |
发表于 3-4-2007 04:25 PM
|
显示全部楼层
PHP新手上路(一)
转载自 http://blog.csdn.net/amypal/archive/2007/03/21/1536802.aspx
简介
PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。
1、学习过程
我个人更喜欢PHP的非常简单的学习过程。与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。
PHP的语法类似于C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。
你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的 WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。
2、数据库连接
PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。
3、可扩展性
就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。
4、面向对象编程
PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。
5、可伸缩性
传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以 CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。
6、更多特点
PHP的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。你可以利用PHP连接包括Oracle,MS- Access,Mysql在内的大部分数据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能! |
|
|
|
|
|
|
|

楼主 |
发表于 3-4-2007 04:26 PM
|
显示全部楼层
PHP新手上路(二)
转载自 http://blog.csdn.net/amypal/archive/2007/03/22/1537305.aspx
从一个简单的程序来了解PHP
PHP站点的在线教程已经很棒了。而本文的该部分将让你对PHP熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开始你的PHP编程。
2.1 首要条件
你首先必须要有一个正在工作着的支持PHP的web服务器。我假定在你的服务器上所有PHP文件的扩展名为.php3。
2.2 PHP的安装
有关PHP的安装配置,可以查阅网页陶吧上的“PHP安装全攻略”专题文章。
2.3 语法
从语法上看,PHP语言近似于C语言。可以说,PHP是借鉴C语言的语法特征,由C语言改进而来的。我们可以混合编写PHP代码和HTML代码,不仅可以将PHP脚本嵌入到 HTML 文件中,我们甚至还可以把 HTML 标签也嵌入在 PHP 脚本里。以下是你可以采用的几种方法。你可以选用其中一种你最适合的并且就这样坚持这种方法!
从HTML中分离
以下是可以使用的方法:
<? . . . ?>
<?php . . . ?>
<script language="php"> . . . </script>
<% . . . %>
注:当你使用“<? . . . ?>”将PHP代码嵌入于HTML文件中时,可能会同XML发生冲突,同时,能否使用这一缩减形式还取决于PHP本身的设置。为了可适应XML和其它编辑器,你可以在开始的问号后面加上“php”使PHP代码适应于XML分析器。如:“<?php. . . ?>”。也可以像写其它脚本语言那样使用脚本标记,如:“<script language="php"> . . . </script>”。
语句
与Perl和C一样,在PHP中用“;”来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。
注释
PHP支持C,C 和Unix风格的注释方式:
/* C,C 风格多行注释 */
// C 风格单行注释
# Unix风格单行注释
echo 和 print
PHP 和 HTML 最简单的交互是通过 print 和 echo 语句来实现的,在实际使用中, print 和 echo 两者的功能几乎是完全一样。可以这么说,凡是有一个可以使用的地方,另一个也可以使用。但是,两者之间也还是一个非常重要的区别:在 echo 函数中,可以同时输出多个字符串,而在 print 函数中则只可以同时输出一个字符串。同时,echo函数并不需要圆括号,所以echo函数更像是语句而不像是函数。让我们来看看下面这一实例:
<?
$a="hello";
$b="world";
echo "a","b";
print "a","b";
?>
用浏览器观看这段代码的运行情况后,你会看到这样的运行结果:
aba
Parse error: parse error in d:adminmyphphometest.php3 on line 5
这说明这段代码并不能完全通过解释,发生错误的地方就在代码的第五行:“print "a","b";”。
2.4一个简单的实例
通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语
<HTML>
<HEAD>
<TITLE>
<?
echo "Hello World!";
?>
</TITLE>
</HEAD>
<BODY>
<H1>
First PHP page
</H1>
<HR>
<?
// Single line C style comment
/*
printing the message
*/
echo "Hello World!";
# Unix style single line comment
?>
</BODY>
</HTML> |
|
|
|
|
|
|
|

楼主 |
发表于 3-4-2007 04:27 PM
|
显示全部楼层
新手上路(三)
转载自 http://blog.csdn.net/amypal/archive/2007/03/22/1537539.aspx
PHP入门
数据类型
PHP支持整数、浮点数、字符串、数组和对象。
你可以使用cast或者函数settype()将某种类型的变量转换成指定的类型。
数值
数值类型可以是整数或是浮点数。你可以用以下的语句来为一个数值赋值:
$a = 1234; # 十进制数
$a = -123; # 负数
$a = 0123; # 八进制数 (等于十进制数的83)
$a = 0x12; # 十六进制数(等于十进制数的18)
$a = 1.234; # 浮点数"双精度数"
$a = 1.2e3; # 双精度数的指数形式
字符串
可以用‘’或“”引出字段定义
''引出的字符串是以字面定义
" "可以使用反斜杠()在字符串加入转义序列和转换字符
例:
$first = 'Hello';
$second = "World";
$full1 = "$first $second"; # 产生 Hello World
$full2 = '$first $second';# 产生 $first $second
$full3="01DC studio,." 2000 copyright." " ;
请注意最后一行,如果需要在字符串中使用双引号,可以使用反斜杠字符,象该行语句所示。这里的的反斜杠用来使双引号的功能改变。
数组与哈希表
数组与哈希表以同样的方法被支持。可以用list()或者array()来定义它,也可以直接为数组赋值。数组的索引从0开始。
// 一个包含两个元素的数组
$a[0] = "first";
$a[1] = "second";
$a[] = "third"; // 添加数组元素的简单方法
// 现在$a[2]被赋值为"third"
echo count($a); // 打印出3,因为该数组有3个元素
// 用一个语句定义一个数组并赋值
$myphonebook = array (
"sbabu" => "5348",
"keith" => "4829",
"carole" => "4533"
);
// 噢,忘了教长吧,让我们添加一个元素
$myphonebook["dean"] = "5397";
// 你定义的carale元素错了,让我们更正它
$myphonebook["carole"] => "4522"
// 我还没有告诉你怎样使用数组的相似支持方式吗?让我们看一看
echo "$myphonebook[0]"; // sbabu
echo "$myphonebook[1]"; // 5348
其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。
对象
使用new语句产生一个对像;
class foo
{
function do_foo ()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
改变变量类型
PHP不支持(也不需要)直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。
$foo = "0"; // $foo是字符串(ASCII 48)
$foo ; // $foo是字符串"1" (ASCII 49)
$foo = 1; // $foo现在是整数(2)
$foo = $foo 1.3; // $foo是一个双精度数(3.3)
$foo = 5 "10 Little Piggies"; // $foo是一个整数(15)
$foo = 5 "10 Small Pigs"; // $foo是一个整数(15)
如果想要强行转换变量类型,可以使用与C语言相同的函数settype()。
变量与常量
变量都有一个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。
$g_var = 1 ; // 全局范围
function test()
{
global $g_var; // 这样就可以声明全局变量了
}
更先进一些的是变量的变量表示。请参考PHP手册。这在有时会显得很有用。
PHP内置了许多已定义的变量。你也可以用define函数定义你自己的常量,比如define("CONSTANT","value")。
运算符
以下只有一种运算符是有关字符的:
$a $b :加
$a - $b :减
$a * $b :乘
$a / $b :除
$a % $b :取模(余数)
$a . $b :字符串连接
逻辑和比较
逻辑运算符有:
$a || $b :或
$a or $b :或
$a && $b :与
$a and $b :与
$a xor $b :异或 (当$a或$b为true时为true,两者一样时为false)
! $a :非
比较运算符有:
$a == $b :相等
$a != $b :不等
$a < $b :小于
$a <= $b :小于等于
$a > $b :大于
$a >= $b :大于等于
与C一样PHP也有三重运算符(?:)。位操作符在PHP同样存在。
控制流程结构
PHP有着与C一样的流程控制。我将在下面大概介绍。
if, else, elseif, if(): endif
if (表达式一)
{
. . .
}
elseif (表达式二)
{
. . .
}
else
{
. . .
}
// 或者像Python一样
if (表达式一) :
. . .
. . .
elseif (表达式二) :
. . .
else :
. . .
endif ;
Loops. while, do..while, for
while (表达式)
{
. . .
}
do
{
. . .
}
while (表达式);
for (表达式一; 表达式二; 表达式三)
{
. . .
}
//或者像Python一样
while (expr) :
. . .
endwhile ;
switch
switch是对多重if-elseif-else结构的最好的替换:
switch ($i)
{
case 0:
print "i equals 0";
case 1:
print "i equals 1";
case 2:
print "i equals 2";
}
break, continue
break中断当前的循环控制结构。
continue被用来跳出剩下的当前循环并继续执行下一次循环。
require, include
就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,可以使用include()。这样就使得你可以将复杂的PHP文件分割成多个文件并且在不同需要时分别引用它们。
函数
你可以像以下的例子一样定义自己的函数。函数的返回值可以是任何数据类型:
function foo (变量名一, 变量名二, . . . , 变量名n)
{
echo "Example function.n";
return $retval;
}
所有PHP代码都可以出现在函数定义中,甚至包括对其他函数和类的定义。函数必须在引用之前定义。
类
利用类模型建立类。可以参考PHP手册中对类的详细解释。
class Employee
{
var $empno; // 员工人数
var $empnm; // 员工姓名
function add_employee($in_num, $in_name)
{
$this->empno = $in_num;
$this->empnm = $in_name;
}
function show()
{
echo "$this->empno, $this->empnm";
return;
}
function changenm($in_name)
{
$this->empnm = $in_name;
}
}
$sbabu = new Employee;
$sbabu->add_employee(10,"sbabu");
$sbabu->changenm("babu");
$sbabu->show(); |
|
|
|
|
|
|
|
发表于 6-4-2007 11:56 PM
|
显示全部楼层
PHP目前最大的挑战就是缺乏一个具代表性及出色的开发环境.... 在框架上大部分都在RoR的压力之下催生的。Java有Spring,Struts,JSF,Velocity,Tapestry等MVC框架;.NET有ASP.NET;Ruby有Rails,Camping; Python有Django; PHP到目前还是PHP... 很明显的...以往的盛况已经逐渐衰退....
曾经尝试PHP Zend Framework.... 结果还是放弃了....因为RoR的味道太浓了,而且用起来也很别扭。
之前PHP5的出现并没有在PHP社区内造成很大的轰动.... 许多项目还停留在PHP4,这点我觉得很纳闷。希望接下来PHP会出现一个具代表性的框架.
[ 本帖最后由 苦瓜汤 于 7-4-2007 12:12 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 9-4-2007 02:46 AM
|
显示全部楼层
原帖由 苦瓜汤 于 6-4-2007 11:56 PM 发表
之前PHP5的出现并没有在PHP社区内造成很大的轰动.... 许多项目还停留在PHP4,这点我觉得很纳闷。希望接下来PHP会出现一个具代表性的框架.
所见略同.
对于 PHP 5 没造成很大的轰动及改变有点惊讶, 因为 PHP 5 强调的是 OO 方面加强了.
可能目前的选择多了起来, 而网站的要求也越来越复杂.
对我而言, PHP 还是一个绝佳的脚本文, 如果不是要建立太复杂的项目.  |
|
|
|
|
|
|
| |
本周最热论坛帖子
|