PHP 针对PERL开发人员
本章将列出PHP和PERL之间的主要相似性和差异。这将帮助PERL开发人员快速了解PHP并避免常见错误。
相似之处
-
编译脚本语言 - Perl和PHP都是脚本语言。这意味着它们不用于在执行之前生成原生的独立可执行文件。
-
语法 - PHP的基本语法非常接近Perl的语法,并且两者都与C语言共享许多句法特征。代码不区分空格,语句以分号结尾,花括号将多个语句组织到一个块中。函数调用以函数名开头,后跟用逗号分隔的实际参数的括号。
-
以美元符号开头的变量 - PHP中的所有变量都类似于Perl中的标量变量:前面带有美元符号($)的名称。
-
不需要声明变量 - 与Perl一样,在使用PHP变量之前不需要声明其类型。
-
弱类型变量 - 与Perl一样,在PHP中,变量除了当前持有的值之外,没有固有的类型。您可以在同一类型的变量中存储数字或字符串。
-
字符串和变量插值 - PHP和Perl对双引号字符串(”字符串”)比单引号字符串(’字符串’)进行更多解释。
差异
-
PHP是嵌入HTML的 - 尽管可以通过从命令行运行PHP来使用它执行任意任务,但更通常地与Web服务器连接并用于生成Web页面。如果你习惯用Perl编写CGI脚本,那么PHP的主要区别在于你不再需要使用print或heredoc语句显式打印大块静态HTML,而是可以在PHP代码块之外直接编写HTML本身。
-
无@或%变量 - PHP只有一种变量,以美元符号($)开头。可以将语言中的任何数据类型存储在这些变量中,无论是标量还是复合类型。
-
数组与哈希 - PHP只有一种称为数组的数据类型,它既可以扮演Perl中的哈希,又可以扮演数组/列表的角色。
-
指定函数参数 - PHP中的函数调用看起来与Perl中的子例程调用非常相似。而PHP中的函数定义通常需要类似C或Java的形式参数列表,而在PERL中则不是这样。
-
函数中的变量作用域 - 在Perl中,变量的默认作用域是全局的。这意味着顶级变量在子例程内部是可见的。这经常导致函数之间滥用全局变量。而在PHP中,默认情况下,函数定义内部的变量的作用域是局部的。
-
没有像样的模块系统 - 在PHP中,普通的代码文件和用作导入库的代码文件之间没有真正的区别。
-
使用break和continue而不是next和last - PHP更像C语言,使用break和continue而不是next和last语句。
-
没有elsif - Perl的elsif在PHP中是elseif的拼写差异很小。
-
更多种类的注释 - 除了类似Perl(#)的单行注释外,PHP还提供C风格的多行注释(/ 注释 /)和Java风格的单行注释(//注释)。
-
正则表达式 - PHP没有针对正则表达式的内置语法,但在其“Perl兼容”的正则表达式函数中具有大部分相同的功能。