IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

php语言漫谈

Zhang Jiuan' Notes 2010-02-08 23:43:07 累计浏览 4,306 次
本机暂存

    不知觉间,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. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,270)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,408)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,150)
  5. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,791)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  7. Redis消息队列的若干实现方式 (累计阅读 12,088)
  8. 到底什么是MVC? (累计阅读 11,870)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,709)
  10. Rolling cURL: PHP并发最佳实践 (累计阅读 11,488)