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

### 相似点

Ruby 与 PHP 一样的地方...

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

### 相异点

Ruby 与 PHP 不同的地方...

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