PHP 针对C开发人员
最简单的方式将PHP理解为可以嵌入HTML文档中的解释型C语言。语言本身与C语言非常类似,只是变量无需指定类型,内建了大量Web特定的库,而且可以直接连接到你最喜爱的Web服务器。
语句和函数定义的语法应该很熟悉,只是变量前面总是有$符号,并且函数不需要单独的原型。
在这里,我们将会介绍PHP和C之间的一些相似性和差异性。
相似性
-
语法 − 广义来说,PHP的语法与C语言相同:代码对空格不敏感,语句以分号结尾,函数调用的结构相同(my_function(expression1, expression2)),花括号(
{
和}
)将语句组合成块。PHP支持C和C++风格的注释(/* */
和//
),还支持Perl和Shell脚本风格的注释(#
)。 -
运算符 − 赋值运算符(
=,+=,*=
等),布尔运算符(&&,||,!
),比较运算符(<,>,<=,>=,==,!=
),以及基本算术运算符(+,-,*,/,%
)在PHP中与C语言的行为相同。 -
控制结构 − 基本控制结构(
if,switch,while,for
)的行为与C语言相同,包括支持break和continue。一个显著的区别是PHP的switch语句可以接受字符串作为case标识符。 -
函数名称 − 当你查阅文档时,你会看到很多函数名称与C函数非常相似。
差异性
-
美元符号 − 所有变量都用$符号表示。变量不需要在分配之前声明,并且它们没有固有类型。
-
类型 − PHP只有两种数值类型:整数(对应C中的long)和浮点数(对应C中的double)。字符串长度任意。没有单独的字符类型。
-
类型转换 − 类型在编译时不会被检查,通常也不会在运行时发生类型错误。相反,变量和值会根据需要自动转换为不同类型。
-
数组 − 数组的语法与C的数组语法有些相似,但实际上它们的实现完全不同。它们实际上是关联数组或哈希表,索引可以是数字或字符串。不需要提前声明或分配。
-
没有结构类型 − PHP中没有结构体,部分原因是数组和对象类型已经足够满足需要。PHP数组的元素不需要是一致的类型。
-
没有指针 − PHP中没有可用的指针,尽管无带纸变量起到了类似的角色。PHP支持变量引用。在某种程度上,你可以模拟函数指针,因为函数名可以存储在变量中,并通过使用变量而不是字面名称调用。
-
没有原型 − 函数在其实现被定义之前不需要声明,只要定义可以在当前代码文件或包含的文件中找到即可。
-
内存管理 − PHP引擎在有效地垃圾回收环境(引用计数)中运行,在小型脚本中不需要进行任何释放操作。可以自由分配新的结构,如新的字符串和对象实例。在PHP5中,可以为对象定义析构函数,但没有free或delete操作。在内存被回收之前,当对对象的最后一个引用消失时,析构函数会被调用。
-
编译和链接 − PHP脚本没有单独的编译步骤。
-
自由度 − 总的来说,PHP比C更宽松(尤其在类型系统上),所以它会让你可以犯更多种类的错误。意外的结果比错误更常见。