当前位置: 首页 >> 程序设计 >> PHP软件开发基础
 

PHP软件开发基础

作者:      来源:http://blog.csdn.net/Diogin     发表时间:2007-01-29     浏览次数:      字号:    

 说说我对PHP软件开发的一些粗浅的idea。

    1. 版本+标准。没有标准,得到的将是一团混乱的代码。PHP的版本较多,版本间的差异也不少(如5.0不允许array类型的hint,5.1才开始支持),所以首要的方面就是要统一标准。现阶段我的代码以5.2版本为基准。当6.0发布后,在开发环境里第一时间部署,并尽快熟悉其整个环境。生产环境一般要等到6.2左右才行。

    2. 语言。PHP是一种支持多种编程风格的语言,可以用命令式(亦即过程式,典型的如C语言,编程拓扑是“数据”+“算法”)、对象式(面向对象编程,典型的如Java,编程拓扑是“对象”、“角色”和“协作”,在这里我要特别提一下《对象设计:角色、责任与协作》这本书,它让我真正走进了面向对象程序设计的领域。另一本是Grady Booch的《面向对象分析与设计》第2版,OOA/OOD领域的顶尖级名著。)以及函数式(基于函数的语言,典型的如LISP,不过我对这类编程不熟悉)。决定采用哪种风格编程后最好就在整个系统上维持一致的风格,当然在这之前最好对不同编程风格的拓扑有个非常清晰的了解。现阶段我采用的是面向对象风格,即使有部分高层的工具函数,也按逻辑功能关系划分到工具类里去并组成一个工具包以复用。

    3. 标准库。事实上PHP的标准库并不清晰,历史上标准库指的是standard(默认即编译进PHP)、date、pcre等默认可用的扩展,但5.0出现后,标准库实际上成了SPL (Standard PHP Library)扩展的代名词。类似session、mysql之类的扩展,虽然使用非常频繁,但它们实际上并不是标准库的一部分。现阶段我把标准库定义为standard扩展和SPL扩展的合集,外加date、pcre和reflection。不过这样并不够严格,也许还需斟酌。

    4. 扩展库。PHP有150类扩展库,包含了成千个函数,还有类、资源等等。具体使用哪些扩展,需要视情况而定。如果开发的是通用型程序,最好使用大多数机器都支持的扩展,以求得更广泛的适用性。反之如果开发的是专用程序,那就可以大展手脚,用上各类专业级扩展,把PHP用得淋漓尽致。具体还得看程序员怎么发挥了。

    5. 运行环境。运行环境分两种,一种是开发机上的运行环境,一种是服务器上的运行环境。介于这两者之间可能还有第三种运行环境(如团队内部服务器环境)。 PHP可以以多种方式运行:模块方式、CGI方式和FastCGI方式。最传统的运行方式是Apache+模块方式,开发机器用的是Windows,使用多线程方式的SAPI,不过PHP创始人之一Andi Gutmans推荐使用FastCGI方式的SAPI。服务器一般用的是Linux/Unix系统,Web服务器使用Apache或Lighttpd,Apache可以选择使用进程(prefork)或线程(worker)方式。由于以模块方式安装的PHP是继承Apache子进程的权限的,所以在权限处理上限制比较大。另外,虽然Zend承诺核心PHP是线程安全的,但我始终不放心。总地来说,一般的推荐组合是,开发机器:Windows+Apache2.0+PHP(FastCGI),服务器:Linux/Unix+Lighttpd+PHP(FastCGI)+XCache+Memcached。这样可以得到最大性能,而且因为PHP进程是单独运行的,不会产生多线程环境下的一些bug,同时还能更适应Unix的权限系统,达到程序的最大灵活性。

    6. 开发工具。这个就是仁者见仁智者见智了。有些人可能使用小工具的组合开发起来最快,而有些人则习惯IDE。我个人一直使用EditPlus,它强大的自动完成和快捷键让我写起PHP代码非常快,此外它还可以把程序直接送给外部程序执行,直接捕获结果,非常方便。不仅如此,它还内置一个浏览器接口,可以即时调试。如果花点心思,完全可以把EditPlus配置成一个强大的IDE,而且启动非常快速。其它的辅助型工具有:phpDocumentor(为代码生成文档)、PHPUnit(单元测试工具)、Xdebug(强大的调试工具,可以把输出送入另一个叫做wincachegrind的程序进行性能分析)等等。如果需要一个强大的IDE,那么有多种选择,我推荐两个:PHP Development Tool(Eclipse项目,PDT)和Zend Studio(Zend开发的IDE,功能非常强大)。以后我可能会选择Eclipse+PDT,毕竟它是开源的,而且还可以用来开发Java程序。最后,还需要一个版本控制工具(这方面自然不必说了,非Subversion+TortoiseSVN莫属)和代码阅读工具(鼎鼎大名的Source Insight,可惜现在对PHP支持不够,只提供了一个很简陋的PHP插件)。

    7. 开发方法。在这个崇尚敏捷开发的年代,PHP自然也不例外。至于怎么敏捷,遵循什么方法论,我就不赘述了,这是个非常大的话题,三天三夜也说不完。可以参考一些书籍,如《测试驱动开发》、《解析极限编程-拥抱变化》、《重构与模式》、《敏捷软件开发:原则、模式与实践》、《敏捷软件开发生态系统》等书籍。我也在实践中,欢迎大家跟我交流:)

    8. 设计思想。这是一个非常广阔的话题,同样三天三夜也说不完。如果对设计感兴趣,我个人觉得最好的方法就是看代码+读经典的设计书籍。代码方面,推荐阅读一些国外的PHP框架(Zend Framework,Symfony,Agavi等等,当然如果你不想局限于PHP,也可以参考参考Ruby on Rails这个红得发紫的框架)。设计书籍方面资料实在太多,我就不一一列举了,网上一找一大把。

    以上,是我当前对PHP软件开发的一些入门级想法,如果您有什么建议和指导,恳请不吝赐教:)

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •