PHP 编程 / Ruby 编程 · 2012/08/02 0

PHP步向Ruby

PHP 在Web应用中获得了广泛的使用, 但是如果你想用用 Ruby on Rails 或者只是想学一门更贴近常规用途(不仅仅局限于web应用)的新语言,那么Ruby是值得一看的.

相似点
Ruby中和PHP中类似的地方…

  • Ruby 和 PHP 一样都是动态类型语言,所以你不必为声明变量而困扰.
  • 也有类,而且你同样也可以对它们的访问进行控制,就像PHP 5(中的public, protected 和 private)
  • 一些变量也以$开始,但不是所有的变量都这样
  • 也有eval
  • 你可以在字符串中插入变量, 但不是 “$foo is a $bar” 这样的, 你要这么写 “#{foo} is a #{bar}”. 还有一点与PHP一样, 字符串插入变量无法在单引号下生效.
  • 有 heredocs
  • Ruby 有异常
  • Ruby 有一个相当庞大的标准库
  • 数组和哈希都可以像你习惯的那样工作,如果你使用 { 和 } 替换 array(): array(‘a’=>’b’) 变成 {‘a’ => ‘b’}
  • true 和 false 的写法和 PHP 类似, 但是 null 在 Ruby 里就叫做 nil

不同之处
Ruby 和 PHP 中不一样的地方

  • Ruby 是强类型的, 你需要调用 to_s, to_i 等来实现 字符串,整型 等等之间的转换, 而不是坐等语言自己搞定这些问题.
  • 字符串,数字,数组,哈希等都是对象. 比如取一个负数的绝对值应该是 -1.abs 而不是 abs(-1)
  • 方法调用时的括号是可有可无的, 除非需要标明参数是哪个方法调用的
  • 拒绝使用下划线这样的命名规范. 标准库和扩展是被封装在模块和类中的
  • 反射是一个对象的固有能力, 你无需像PHP中那样使用反射类(Reflectio).
  • 变量即是引用
  • 没有抽象类和接口
  • 哈希和和数组无法混用
  • 在条件判断中只有 false 和 nil 是逻辑否; 0,空数组和空字符串都是逻辑真.
  • 几乎所有东西都是方法调用, 甚至是异常抛出(Ruby中的raise相当于 PHP 中的throw)

译自: To Ruby From PHP