php语言漫谈
不知觉间,php使了两年多了,中间踩过不知多少坑,当然,也从中体悟到很多东西,也做了不少东西,多多少少有些感想,慢慢总结下来吧。
1 php语方层面很随意:
这也主要是由它的功能及所属的层面决定的吧。php弱类型,在变量比较的时候可以选择使用==或===,前者表示变量转换成同类型后的值是不是相等,而后者则是要求首先是类型相同,然后值也相同。
php变量可以动态定议,它不需要提前定意一个变量,也不必要定义的时候指定该变量的类型。比如var $variable;则一个$variable变量便产生了,它的类型实际是由赋于它的值决定的。因此这一方面,使用都可以少了许多束缚。
2 php有很好的正则支持:
php提供了较为丰富的正则支持,如preg_match, preg_match_all等。
如果想从一个字符串或文件中提取出来一些片段,那是十分方便的。比如有如下文本:
以下是引用片段:
192.168.1.1 xxx user:zja601 url:http://www.jiuanblog.cn
如果我们想提取出user和url的话,如简单语句就可搞定:
以下是代码片段: if (preg_math(’/^.*user:([^\s]*)\surl:(.*)$/’, $string, $arr_result)) { printf(”user is:%s url is:%s”, $arr_result[1], $arr_result[2]); } |
简单吧,当然,shell脚本可能会有更简单的办法,比如:sed -n ’s/^.*user:\([\s]*\)\burl:\(.*\)$/\1 \2/p’
但php可以结合其它的一些场合,而不像shell那么孤立的功能,使得整体功能更加灵活。
3 php有强大的函数库:
比如数组$_GET参数到字符串形式的来回转换,有explode和build_string_query就很轻松的搞定了。比如数组的array_merge,push, pop等等,可能帮助你事半功位。比如php数组的强大功能,给你在c/c++花很大力气才能达到的效果。比如操作pdf,文件等函数,在需要的时候文档一下即可搞定。
4 php对面向对象的思想支持的也相对不错:
从php4之后,php对面象对象支持的越来越好。特别是interface的抽象,可能使设计的时候更加关注接口间的合理性考量。php的继承关系也达到了一个很好的复用效果,如果你是一位C++爱好者,那么也试一下php的C++版本吧,一定会有不错的效果。php的对象的执行也是动态的,就是在c++或java里讲的后期绑定吧。
5 php语言的动态性:
php语言具有动态性,它在动态执行的时候,解析代码。源代码写好即可执行,不必要经历一个繁琐的编译过程。动态性也表现为程序运行时解析,因此它只解析运行到的代码而不去解析未执行的代码。(尽管有人说这一点并不太好)动态性的另外一个层面就是上面讲的对象的动态性了。
其实php也有其内在的陷阱
比如函数参数的引用传递,比如函数返回值的引用返回,这些都有可能造成php的fatal的出现。另外,正是由于php的弱类型,往往有时候,我们不能很精确的把握程序进行时的值或状态。如果真的想得到当时的值或状态,可能花费的力气并不值得(并不是做不到)。php的@符号用来抑制一些错误的报出,有时候不做一些额外的判断,就有可能有意想不到的问题产生。php函数名的长度会影响其执行的效率,这可能许多程序员不会注意到(当然很多场合不必要去注意这些事),尽管我们选择php语言,不是选择它的效率。php动态执行,因此一些有基本语法错误的地方,如果程序运行时走不到,那么有可能就不会被发现。诸如此类的还有很多。。。
建议继续学习:
- 每个程序员都应该学习使用Python或Ruby (阅读:16272)
- 敲击最多的键和编程语言语法 (阅读:5820)
- 为什么Lisp语言如此先进?(译文) (阅读:5624)
- 编程语言的选择很重要 (阅读:4274)
- 编程语言的可读性 (阅读:3941)
- PHP很烂?我的看法 (阅读:3621)
- 几种计算机语言的评价(修订版) (阅读:3276)
- 分清“语言/规范”以及“平台/实现”,以及跨平台.NET开发 (阅读:3178)
- 为什么我喜欢Lisp语言 (阅读:2975)
- 再谈非主流工业语言 (阅读:2909)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:zja601 来源: Zhang Jiuan' Notes
- 标签: 语言
- 发布时间:2010-02-08 23:43:07
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [54] android 开发入门
- [54] 图书馆的世界纪录
- [54] 如何拿下简短的域名
- [52] Oracle MTS模式下 进程地址与会话信
- [52] Go Reflect 性能
- [49] 【社会化设计】自我(self)部分――欢迎区
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [41] 程序员技术练级攻略
- [35] 视觉调整-设计师 vs. 逻辑