从 PHP 迁移到 Ruby
PHP 广泛应用于 Web 应用,但如果你想使用 Ruby on Rails,或者只是想要一门更适合通用用途的语言,Ruby 值得一看。
相似之处
与 PHP 类似,在 Ruby 中...
- Ruby 是动态类型的,就像 PHP 一样,所以你不必担心需要声明变量。
- 有类,并且你可以像 PHP 5 一样控制对它们的访问(
public、protected和private)。 - 有些变量以 $ 开头,就像 PHP 一样(但并非所有)。
- 也有
eval。 - 你可以使用字符串插值。与其做
"$foo is a $bar",不如做"#{foo} is a #{bar}"—和 PHP 一样,这不适用于单引号字符串。 - 有 heredocs。
- Ruby 有异常,就像 PHP 5 一样。
- 有一个相当大的标准库。
- 数组和哈希(hashes)的用法符合预期,如果你将
array()替换为{和}:array('a' => 'b')变成{'a' => 'b'}。 true和false的行为与 PHP 相同,但null被称为nil。
不同之处
与 PHP 不同,在 Ruby 中...
- 有强类型。你需要调用
to_s、to_i等来在字符串、整数等之间进行转换,而不是依赖语言自动转换。 - 字符串、数字、数组、哈希等都是对象。与其调用 abs(-1),不如写成 -1.abs。
- 方法调用中的括号是可选的,除非需要区分哪个参数属于哪个方法调用。
- 标准库和扩展被组织在模块和类中。
- 反射是对象的固有能力,你不需要像 PHP 5 那样使用
Reflection类。 - 变量是引用。
- 没有
abstract类或interface。 - 哈希和数组不能互换使用。
- 只有
false和nil为 false:在条件判断中,0、array()和""都为 true。 - 几乎所有东西都是方法调用,甚至是
raise(PHP 中的throw)。