IT技术博客大学习 共学习 共进步

php语言漫谈

Zhang Jiuan' Notes 2010-02-08 23:43:07 浏览 4,182 次

    不知觉间,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动态执行,因此一些有基本语法错误的地方,如果程序运行时走不到,那么有可能就不会被发现。诸如此类的还有很多。。。

建议继续学习

  1. 每个程序员都应该学习使用Python或Ruby (阅读 17,740)
  2. 敲击最多的键和编程语言语法 (阅读 7,302)
  3. 为什么Lisp语言如此先进?(译文) (阅读 6,401)
  4. 编程语言的选择很重要 (阅读 5,121)
  5. 编程语言的可读性 (阅读 4,962)
  6. PHP很烂?我的看法 (阅读 4,501)
  7. 几种计算机语言的评价(修订版) (阅读 4,141)
  8. 分清“语言/规范”以及“平台/实现”,以及跨平台.NET开发 (阅读 4,143)
  9. 为什么我喜欢Lisp语言 (阅读 3,921)
  10. 再谈非主流工业语言 (阅读 3,740)