PHP 与 C 语言对比
最简单的说法是把 PHP 当做 C,可以嵌入在 HTML 文档中。PHP 很像 C 语言本身,除了没有类型的变量,很多网络特性库被建立,并且一切直接连接到您最喜爱的 Web 服务器。
语句和函数定义的语法应该很熟悉,除了变量总是定义在 $ 之后,函数不需要单独的原型。
这里我们将把 PHP 和 C 一些相似点和不同点进行介绍下:
相似处
-
语法:一般来说,PHP 和 C 的语法是一样的,C 语言代码简洁紧凑、灵活方便,语句用分号终止。函数调用有相同的结构(my_function(expression1 expression2)),使用语句块花括号({and})。PHP 支持 C 和 C++ 风格的注释(/ / / /),以及 Perl 和 Shell 脚本风格(#)。
-
运算符:赋值运算符(=,+=, =等等),布尔操作符(&&,| |,!)比较运算符(<,>, <=, >=, ==, !=)和基本的算术运算符(+, -, , /, %),这些 C 的操作运算符和 PHP 一样。
-
控制结构:基本控制结构(if, switch, while, for)和 C 语言基本一样,包括使用 break and continue 关键字。一个明显的区别是, switch 在 PHP 里可以接受字符串作为标识符。
- 函数名:当你仔细阅读文档,你会看到许多和 C 函数相同的的函数名。
不同之处
-
$ 符号:所有变量用一个 $ 符号来表示。变量在调用之前不需要声明,他们之间没有本质的类型区别。
-
类型:PHP 只有两个数值类型:整数(对应于 C 的 long)和双精度类型(对应于 C 的 double),任意长度的字符串。没有单独的字符类型。
-
类型转换:类型不是在编译时检查,和类型错误也通常不发生在运行时。相反,变量和值会自动转换类型。
-
数组:数组在语法层面上类似于 C 的数组的语法,但它们的实现完全不同。他们实际上是关联数组或散列,索引可以是数字或字符串。他们不需要声明或提前分配。
-
结构类型:在 PHP 中没有结构,部分原因是它们在一起时没有必要都是数组和对象类型。一个 PHP 数组的元素可以是不一致的类型。
-
没有指针:虽然无类型变量发挥类似的作用,在 PHP 中没有指针。PHP 不支持变量引用。在某种程度上你也可以模拟函数指针,把函数名可以存储在变量和被使用的变量中而不是文字名称。
-
没有原型:宣布实施之前函数不需要定义,只要可以找到定义函数所在当前文件的代码。
-
内存管理:PHP 引擎实际上是一个垃圾回收机制(采用引用计数),在小脚本中运行不需要做任何回收。你应该自由分配新结构——如新的字符串和对象实例。在 PHP5 中,可以定义对象的析构函数,当 PHP 决定你的脚本不再与对象相关时,PHP 析构函数将被调用,PHP 调用它们来将一个对象从内存中销毁,在内存回收。
-
编译和链接:没有单独的编译 PHP 脚本的步骤。
- 许可:一般而言,PHP 比 C 更加宽松 (尤其是它的类型系统),所以会让你容易远离新类型的错误。意想不到的结果比错误更常见。