PHP 面向 PERL 开发人员


本章将列出 PHP 和 PERL 之间的主要相似点和不同点。这将帮助 PERL 开发人员非常快速地理解 PHP 并避免常见错误。

相似之处

  • 编译脚本语言- Perl 和 PHP 都是脚本语言。这意味着它们不用于在执行之前生成本机独立可执行文件。

  • 语法- PHP 的基本语法与 Perl 的基本语法非常接近,并且两者与 C 共享许多语法功能。代码对空格不敏感,语句以分号终止,花括号将多个语句组织到一个块中。函数调用以函数名称开头,后面是括在括号中并用逗号分隔的实际参数。

  • 美元符号变量- PHP 中的所有变量看起来都像 Perl 中的标量变量:名称前面带有美元符号 ($)。

  • 无需声明变量- 与 Perl 一样,在使用 PHP 变量之前不需要声明它的类型。

  • 变量的松散类型- 与 Perl 一样,PHP 中的变量除了它们当前持有的值之外没有内在类型。您可以将数字或字符串存储在同一类型的变量中。

  • 字符串和变量插值- PHP 和 Perl 对双引号字符串(“string”)的解释多于对单引号字符串(“string”)的解释。

差异

  • PHP 是 HTML 嵌入的- 尽管可以通过从命令行运行 PHP 来执行任意任务,但它更通常连接到 Web 服务器并用于生成网页。如果您习惯于用 Perl 编写 CGI 脚本,那么 PHP 的主要区别在于您不再需要使用 print 或 Heredoc 语句显式打印大块静态 HTML,而只需在 PHP 代码块之外编写 HTML 本身。

  • 没有 @ 或 % 变量- PHP 只有一种变量,以美元符号 ($) 开头。语言中的任何数据类型都可以存储在此类变量中,无论是标量还是复合变量。

  • 数组与散列- PHP 有一种称为数组的数据类型,它在 Perl 中扮演散列和数组/列表的角色。

  • 指定函数的参数- PHP 中的函数调用看起来非常像 Perl 中的子例程调用。另一方面,PHP 中的函数定义通常需要某种形式参数列表,如 C 或 Java 中的形式参数列表,这不是 PERL 中的 CSSE。

  • 函数中的变量作用域- 在 Perl 中,变量的默认作用域是全局的。这意味着顶级变量在子例程内可见。通常,这会导致跨函数混杂使用全局变量。在 PHP 中,函数定义中的变量范围默认是局部的。

  • 没有这样的模块系统- 在 PHP 中,普通代码文件和用作导入库的代码文件之间没有真正的区别。

  • Break 和 continue 而不是 next 和 last - PHP 更像是 C 语言,使用break 和 continue 而不是 next 和 last 语句。

  • 没有 elsif - 一个细微的拼写差异:Perl 的 elsif 是 PHP 的 elseif。

  • 更多种类的注释- 除了 Perl 风格 (#) 单行注释之外,PHP 还提供 C 风格多行注释 (/* comment */ ) 和 Java 风格单行注释 (// comment)。

  • 正则表达式- PHP 没有特定于正则表达式的内置语法,但在其“Perl 兼容”正则表达式函数中具有大部分相同的功能。