从 PHP 到 Ruby

PHP 被广泛的应用在网页程序中,如果你想使用 Ruby on Rails,或者你需要一个更加讲究的多功能程序语言,Ruby 值得一看。

相似点

Ruby 与 PHP 一样的地方…

  • 和 PHP 一样,Ruby 是动态类型的程序语言,所以你不用担心声明变量的问题。
  • Ruby 有类,也有 publicprivateprotected 方法,并且你可以控制对他们的访问,就像 PHP 5 一样。
  • 一些变量以 $ 符开头,和 PHP 一样 (但不总是一样)。
  • 也有 eval
  • 你可以使用字符串内嵌。但不是用 "$foo is a $bar" ,而是 "#{foo} is a #{bar}" ——跟 PHP 一样,这对用单引号包起来的字符串无效。
  • 有 Heredocs。
  • Ruby 有异常处理,就像 PHP 5 一样。
  • Ruby 也有非常广泛的标准函数库。
  • 数组和散列的工作会和你期望的一样,只要你把 array() 换成 {}array('a' => 'b') 变成 {'a' => 'b'}
  • truefalse 和 PHP 一样,但 null 变成了 nil

相异点

Ruby 与 PHP 不同的地方…

  • Ruby 是强类型语言,你需要使用 to_sto_i 等方法使变量在字符串、整数等类型之间转换,而不能依赖编程语言去完成它。
  • 字符串、数字、数组、散列等都是对象。所以应该用 -1.abs 而不是 abs(-1) 。
  • 调用方法时括号是可以省略的,除非需要明确哪些参数对应哪些调用方法时。
  • 取代了命名约定,例如下划线,标准函数库和扩展都被包装成模块和类。
  • 反射是 Ruby 对象与生俱来的能力,你不需要像在 PHP 5 中一样使用 Reflection 类。
  • 变量都是被引用的。
  • 沒有抽象类 abstract 或接口 interface
  • 散列和数组不能互换使用。
  • 只有 falsenil 是假:0array()"" 在条件判断时均为真。
  • 几乎所有东西都是调用方法,甚至是 raise (PHP 的 throw)。