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
,protected
iprivate
). - 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'}
. true
ifalse
zachowują się jak w PHP, alenull
określany jest jakonil
Różnice
W przeciwieństwie do PHP, w Rubim…
- Istnieje silna typizacja. Musisz wywołać
to_s
,to_i
itd., 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
Reflection
jak w PHP 5. - Zmienne są referencjami
- Nie ma klas
abstract
czy teżinterfece
- Hasze i tablice nie są zamienne, to dwie różne rzeczy
- Tylko
false
inil
są fałszem:0
,array()
i""
są prawdą w wywołaniach warunkowych. - Prawie wszystko jest wywołaniem metody, nawet
raise
(throw
w PHP).