Da PHP a Ruby

PHP è un linguaggio diffusissimo in ambito di sviluppo di applicazioni web, tuttavia se vuoi utilizzare Ruby on Rails o semplicemente stai cercando un linguaggio che è stato pensato per un uso più generale, Ruby può fare al caso tuo.

Somiglianze

Come in PHP, in Ruby…

  • viene usata una tipizzazione dinamica, come in PHP, quindi non devi preoccuparti di dichiarare variabili.
  • Esistono delle classi, delle quali puoi controllare l’accesso come in PHP (public, protected and private).
  • Alcune delle variabili incominciano per $, come in PHP (ma non sempre)
  • Esiste il metodo eval.
  • Puoi interpolare delle stringhe tra di loro. Invece di scrivere "$x è un $y" puoi fare "#{x} è un #{y}"—Come in PHP, questo non vale per le stringhe tra apici singoli.
  • È possibile usare la sintassi heredoc.
  • È possibile gestire le eccezioni, come in PHP5.
  • Esiste una libreria standard molto completa.
  • Array e hash si comportano come previsto, se cambi array() con { and }: array('a' => 'b') diventa {'a' => 'b'}.
  • true e false si comportano come in PHP, ma null è chiamato nil.

Differenze

A differenza di PHP, in Ruby…

  • C’è una forte tipizzazione. Devi chiamare to_s, to_i ecc. per effettuare delle conversioni tra stringhe, numeri interi, e così via, invece di lasciare al linguaggio tale compito.
  • Stringhe, numeri, array, hash ecc. sono degli oggetti. Invece di chiamare abs(-1) si chiama -1.abs.
  • Le parentesi sono opzionali nelle chiamate ai metodi, eccetto per chiarificare quali parametri si riferiscono a quali metodi.
  • Invece di utilizzare convenzioni sui nomi, la libreria standard e le estensioni sono organizzate in moduli e classi.
  • La riflessione è una capacità innata degli oggetti, non c’è bisogno di utilizzare classi Reflection come in PHP5.
  • Le variabili sono dei riferimenti.
  • Non esistono classi astratte o interfacce.
  • Hash e array non sono intercambiabili.
  • Solo false e nil ritornano falso: 0, array() e "" ritornano tutti vero.
  • Quasi ogni cosa è una chiamata ad un metodo, anche raise (throw in PHP).