PHP е широко разпространен език за писане на интернет
приложения/страници, но ако искате ползвате по-елегантен начин за
програмиране в интернет или да използвате Ruby on Rails, Ruby заслужава
внимание.

### Прилики

Както в PHP, така и в Ruby…

* Не се налага декларирането на променливите
* Съществуват класове и може да контролирате достъпа до методите
  (`public`, `protected` и `private`)
* Някои променливи започват с $ (но не всички)
* Наличен е метода `eval`
* Можете да ползвате интерполиране на низове. Вместо `"$foo is a $bar"`, в
  Ruby това става така: `"#{foo} is a #{bar}"`. Единичните скоби имат
  същото действие и не прилагат интерполация.
* Съществуват heredocs
* Ruby разполага с изключения
* Съществува достатъчно голяма стандартна библиотека
* Масивите и хешовете работят еднакво като заменим `array()` с `{` and
  `}`\: `array('a' => 'b')` става `{'a' => 'b'}`.
* `true` и `false` имат същото поведение, но `null` е наречен `nil` в
  Ruby

### Разлики

За разлика от PHP, в Ruby…

* Ruby e strongly typed език. За това се налага използването на `to_s`,
  `to_i` и т.н. за превръщане на низове, числа, вместо да разчитате
  интерпретатора да свърши това
* Низовете, числата, масивите и хешовете са обекти. За това вместо
  `abs(-1)` ползваме `-1.abs`
* Не е задължителна употребата на скоби в извикването на методи
* Стандартната библиотека и разширенията са организирани в модули и
  класове
* Рефлексията е присъщо свойство на обектите, като не е нужна употребата
  на `Reflection` класове
* Променливите са референции
* Липсват `абстрактни` класове или `интерфейси`
* Масивите и хешовете не са взаимозаменяеми
* Само `false` и `nil` са лъжа: `0`, `array()` и `""` са истина във
  всички условни изрази.
* Почти всичко е извикване на метод, дори `raise` (`throw` в PHP).
