PHP jest szeroko używany przy aplikacjach internetowych, ale jeśli chcesz użyć Ruby on Rails lub po prostu chcesz języka programowania, który jest bardziej dopasowany do ogólnego użycia, warto sprawdzić Rubiego.
Podobieństwa
Tak jak w PHP, w Rubim…
- Ruby jest językiem dynamicznie typowanym, tak jak w PHP, stąd też nie musisz się martwić o deklaracje typów zmiennych.
 - Istnieją klasy, oraz możesz kontrolować dostęp do nich jak w PHP5
(
public,protectediprivate). - Część zmiennych, jak w PHP zaczyna się od $ (ale nie wszystkie)
 - Także istnieje 
eval. - Możesz podmieniać zmienne na wartości w stringach. Zamiast
"$foo is a $bar", napiszesz"#{foo} is a #{bar}"—i tak jak w PHP, nie ma to zastosowania do łańcuchów w pojedynczych cudzysłowach. - Istnieją heredoc’i.
 - Ruby ma wyjątki, tak jak PHP 5.
 - Istnieje dość rozbudowana biblioteka standardowa.
 - Tablice i hasze zachowują się jak mógłbyś tego oczekiwać, jeśli
zamienisz 
array()na{and}:array('a' => 'b')stanie się{'a' => 'b'}. trueifalsezachowują się jak w PHP, alenullokreślany jest jakonil
Różnice
W przeciwieństwie do PHP, w Rubim…
- Istnieje silna typizacja. Musisz wywołać 
to_s,to_iitd., aby przeprowadzić konwersje pomiędzy łańcuchami znaków, liczbami całkowitymi i podobnymi, zamiast polegać, że język zrobi to za ciebie. - Stringi, liczby, tablice, hasze itp. są obiektami. Zamiast wywoływać abs(-1) piszesz -1.abs.
 - Nawiasy są opcjonalne w wywołaniach metod, chyba że musisz wyjaśnić w ten sposób, które parametry odnoszą się do odpowiednich wywołań metod.
 - Zamiast konwencji nazw (np. podkreśleń), biblioteka standardowa Rubiego (i nie tylko) jest podzielona na moduły i klasy
 - Mechanizm refleksji jest odziedziczoną właściwością obiektów, nie
musisz używać klas 
Reflectionjak w PHP 5. - Zmienne są referencjami
 - Nie ma klas 
abstractczy teżinterfece - Hasze i tablice nie są zamienne, to dwie różne rzeczy
 - Tylko 
falseinilsą fałszem:0,array()i""są prawdą w wywołaniach warunkowych. - Prawie wszystko jest wywołaniem metody, nawet 
raise(throww PHP).