php介绍
java与php比较:
参见文章:
http://blog.csdn.net/jinxfei/archive/2010/08/10/5801280.aspx
http://www.zendstudio.net/archives/some-php-development-tips-from-my-own/
上手复杂度:PHP胜
我用 Java 做了 2-3 年的 Swing 开发,然后转向WEB,第一个接触的框架是 Struts,当时的感受就是要配置的东西太多了,前后鼓捣了三个多月,才感觉渐入佳境了。如今PHP从开始了解到现在总共三个月左右的时间(而且只是业余时间),其中有一周的时间在看PHP官网的文档,了解主要的语言特性,后面基本上就是边看边改代码,并照猫画虎的写东西。虽说当年对软件开发的理解不能和今天相提并论,但客观的说,PHP的确简单、易学,而且特别适合做WEB开发。开发感受:各有胜场
PHP最让我不爽的地方:经常是出错后屏幕一片空白(White ScreenOf Death,都有专有名词了,可见这是PHP出错表现的一大特性),什么信息都没有。
这可通过error_reporting (打印在web容器log里)和 display_errors(直接在输出上显示)来设置 PHP php echo
开发工具的auto complete能力远不如java。IDE方面还在起步阶段
访问数据库比JDBC简单多了,不用什么持久化框架也能很快的写出类似DAO的代码。Php也存在ORM框架,但是php的特点不适合搞这些东西,php就是要简单,高性能,针对特定应用。许多专为WEB设计的特性,使得从页面获取信息,或者向页面输出信息都变得非常轻巧。谈不上爽或者不爽的特性:
平台对比
如果拿PHP和JAVA比,我觉得PHP是瑞士军刀,而JAVA则是家庭五金维修工具N件套,N >=100,在解决网站开发这一问题上,PHP的确是小巧、易用,但也有不尽如人意的地方。
比如,我发现J2EE中几乎必不可少的JDBC连接池,在PHP中约等于无,所以,用户请求过来,如果需要访问数据库,都是现连、现取、现关,究其原因,是架构不同造成的。
实际上,J2EE中有Web Container的概念,用户请求是由Container分配的线程完成的,线程可以使用进程的内存空间交互数据;而PHP是依附于Apache的,每 次用户请求,Apache都启动一个新的进程来执行PHP脚本,进程执行完,一切资源都回收了,所以在默认情况下,一个PHP脚本想要留下点“全局”的东 西并不容易(我一开始就被 global 这个关键词给骗了);当然,也不是说不同的请求之间完全没法交换数据,只是这样需要使用共享内存,或者使用文件做持久化。
不过,Apache用进程处理请求应该比线程模式要更加健壮,因为在J2EE中,因为一个线程的问题导致整个Container挂掉的情况屡见不鲜。
OOP
PHP主流版本已经对OOP的支持很好,但因为历史原因,好多PHP的开源项目的代码都是不那么OOP的。一开始,我是跟着框架的习惯,用不怎么OOP的方式写代码,在写了十几个零散的函数之后,终于忍不住,又全部重构成对象了。
做了这么多年的Java,OOP的思想已经非常深入,虽然当年从学校出来的时候,也是从结构化程序设计转向面向对象的,但N年之后,再从面向对象转向结 构化,这种不习惯的感觉更加强烈。也许是OOP真的是更加符合自然的思考习惯吧,现在看着一长串的零散的函数,很有一种不安全的感觉,况且还要挖空心思的 为方法起名,以避免冲突,累!
总结
1、应该把PHP纳入自己的开发工具箱
2、PHP不够完美,但可圈可点之处甚多。
3、面向对象为PHP增色不少
4、在开源领域,PHP方面比较发达的是最终应用,所以才有那么多人使用wordpress建独立博客,哪怕没有开发经验;而JAVA方面比较发达的是开发框架和类库,给程序员们使用的。从这个角度来讲,Java是个小众的语言。
php联合java
http://hi.baidu.com/lei0827/blog/item/28439a4e923234ced1c86a18.html
直接调用的方式
1、种是用php自身带的模块调用java(经过网友的证明发现这种方法不好)。
2、通过php-java-bridge模块调用java。(经过网上普遍推荐)。[最新的版本实现是基于pjb,感觉倒不如直接用http调用.]
间接调用的方式
3、通过webservice或者直接http方式访问java服务
xmpp php
http://code.google.com/p/xmpphp/ 这个稍微强一点
http://www.code.blitzaffe.com/pages/phpclasses/files/jabber_client_52-11
由于php对多线程支持的不好,且对象生命周期短,几个php xmpp库都不理想,不知道怎么实现webchat。
考虑的问题:怎么在1个session里面保持住连接,不至于每次请求都登陆一次吧。
php运行环境:
web服务器(apache, nginx)--开源免费
php--开源免费
zendframework--开源免费
经过实际应用证明的高性能,稳定,可用。
http://blog.s135.com/post/314/
http://lin128.blog.51cto.com/407924/277272
http://guogoul.com/2008/07/08/nginx_2/
使用php的应用:
…这些就足够了