Ruby a PHP

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 i private).
  • 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 i false zachowują się jak w PHP, ale null określany jest jako nil

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 i nil są fałszem: 0, array() i "" są prawdą w wywołaniach warunkowych.
  • Prawie wszystko jest wywołaniem metody, nawet raise (throw w PHP).