从 PHP 迁移到 Ruby

PHP 广泛应用于 Web 应用,但如果你想使用 Ruby on Rails,或者只是想要一门更适合通用用途的语言,Ruby 值得一看。

相似之处

与 PHP 类似,在 Ruby 中...

  • Ruby 是动态类型的,就像 PHP 一样,所以你不必担心需要声明变量。
  • 有类,并且你可以像 PHP 5 一样控制对它们的访问(publicprotectedprivate)。
  • 有些变量以 $ 开头,就像 PHP 一样(但并非所有)。
  • 也有 eval
  • 你可以使用字符串插值。与其做 "$foo is a $bar",不如做 "#{foo} is a #{bar}"—和 PHP 一样,这不适用于单引号字符串。
  • 有 heredocs。
  • Ruby 有异常,就像 PHP 5 一样。
  • 有一个相当大的标准库。
  • 数组和哈希(hashes)的用法符合预期,如果你将 array() 替换为 {}array('a' => 'b') 变成 {'a' => 'b'}
  • truefalse 的行为与 PHP 相同,但 null 被称为 nil

不同之处

与 PHP 不同,在 Ruby 中...

  • 有强类型。你需要调用 to_sto_i 等来在字符串、整数等之间进行转换,而不是依赖语言自动转换。
  • 字符串、数字、数组、哈希等都是对象。与其调用 abs(-1),不如写成 -1.abs。
  • 方法调用中的括号是可选的,除非需要区分哪个参数属于哪个方法调用。
  • 标准库和扩展被组织在模块和类中。
  • 反射是对象的固有能力,你不需要像 PHP 5 那样使用 Reflection 类。
  • 变量是引用。
  • 没有 abstract 类或 interface
  • 哈希和数组不能互换使用。
  • 只有 falsenil 为 false:在条件判断中,0array()"" 都为 true。
  • 几乎所有东西都是方法调用,甚至是 raise(PHP 中的 throw)。