Comparación práctica de los lenguajes PHP y Ruby
Característica
Comentarios
Ruby
# Una linea estilo shell
=begin
Esto es un ejemplo
de comentarios
multilnea
=end
PHP
# Una línea estilo shell
// Una línea estilo C
/*
Esto es un ejemplo
de comentarios
multilinea al estilo C++
*/
Igual comportamiento.
Comillas simples:
'Hola Mundo'
Comillas dobles:
“Hola Mundo {$var}\n”
Concatenar:
'Hola' . 'Mundo'
Repetir:
N/A
$cadena[$indice]
substr($cadena, $inicio,
$longitud)
Comillas simples: cadenas de texto
simples, significan lo que representan.
'Hola Mundo'
Comillas dobles: permiten reemplazar
caracteres escapados y variables
incluídas.
“Hola Mundo #{var}\n”
Concatenar:
'Hola' + 'Mundo'
Repetir:
'Hola ' * 2
cadena[indice]
cadena[inicio, longitud]
cadena[elemini ... elemfin]
Cadenas
Concatenar y
repetir cadenas
Extracción de
caracteres de una
cadena
Arreglos
Unir y repetir
arreglos
Extracción de
elementos del
arreglo
Convertir arreglo a
cadena
Convertir cadena a
arreglo
Conversión de
tipos
arreglo = [1, 2, '3']
arreglo = array(1, 2, '3');
Unir:
a2 = arreglo + ['a', 'b', 'c']
Unir:
$a2 = array_merge($arreglo,
array('a', 'b', 'c'));
Repetir:
a3 = a2 * 5
● arreglo[indice]
● arreglo[inicio, longitud]
● arreglo[elemini ... elemfin]
Repetir:
N/A
$arreglo[$indice]
array_slice($arreglo, $inicio,
$longitud);
arreglo.join(separador)
implode($separador, $arreglo);
cadena.split(separador)
explode($separador, $cadena);
cadena = entero.to_s
entero = cadena.to_i
$cadena = (string)$entero;
$entero = (int)$cadena;
Jorge Iván Meza Martínez <
[email protected]>
Hashes
Acceso,
modificación,
agregación y
eliminación de
elementos del
hash
Lectura de entrada
estándar
condicionales
switch/case
while
foreach
for
if condición
# ...
else
# ...
end
unless es un if negado.
case variable
when opcion1
# ...
when opcion2, opcion3
# ...
end
while condicion
# ...
end
until es un while negado.
for elemento in colección
# ...
end
colección.each{|elemento|
# ...
}
for i in (4 .. 6)
# ...
end
Manipulación de
las iteraciones
break: rompe la iteración y termina
completamente el ciclo.
next: termina la iteración actual y
continúa en la siguiente.
Comparación práctica de los lenguajes PHP y Ruby
hash = {1 => 2, '2' => '4'}
hash[llave] = valor
hash[nueva_llave] = valor
hash[llave] = nil
$hash = array(1 => 2, '2' =>
'4');
$hash[$llave] = $valor;
$hash[$nueva_llave] = $valor;
unset($hash[$llave]);
STDIN.gets
fgets(STDIN)
if (condición)
{
# ...
}
else
{
# ...
}
switch($variable)
{
case opcion1:
# ...
break;
case opcion2, opcion3:
# ...
break;
default:
# ...
break;
}
while (condicion)
{
# ...
}
foreach ($coleccion as $elemento)
{
# ...
}
for ($i=4; $i<=6; $i++)
{
# ...
}
break: rompe la iteración y termina
completamente el ciclo.
continue: termina la iteración actual y
continúa en la siguiente.
Jorge Iván Meza Martínez <
[email protected]>
Comparación práctica de los lenguajes PHP y Ruby
Declaración de una
clase
Declaración de un
método
redo: termina la iteración actual y la
reinicia nuevamente.
class Nombre
# ...
end
class Nombre
def miMetodo(parametros)
# ...
end
end
Declaración de un
constructor
class Nombre
def initalize(parametros)
# ...
end
end
Referencia a la
misma clase
Creación de una
nueva instancia
Llamado de
métodos
Herencia
self
instancia = Clase.new (parametros)
instancia.metodo(parametros)
Los paréntesis son opcionales.
class Hijo < Padre
# ...
end
Referencia a la
clase padre
Encapsulamiento
Módulos/interface
s
super
public
protected
private
Module miModulo
# ...
end
Acceso a los recursos del módulo:
miModulo.metodo(parametros)
miModulo::miConstante
Incluír el módulo en el ambiente actual:
include miModulo
Nombre = valor
Constantes
class Nombre
{
# ...
}
class Nombre
{
function
miMetodo($parametros)
{
# ...
}
}
class Nombre
{
function __construct
($parametros)
{
# ...
}
}
$this
$instancia = new
Clase($parametros);
$instancia -> metodo(parametros);
class Hijo extends Padre
{
# ...
}
parent
public
protected
private
interface miInterfaz
{
# ...
}
class miClase implements
miInterfaz
{
# ...
}
define('Nombre', 'valor');
Jorge Iván Meza Martínez <
[email protected]>
Comparación práctica de los lenguajes PHP y Ruby
Variables globales $nombre = valor
Atributos de
instancia
El nombre de las constantes empieza por
una letra mayúscula.
class miClase
def sumar(valor)
@resultado = resultado +
valor
end
end
Inicialmente tiene el valor de nil.
Variables locales
nombre = valor
Verificar la
existencia de una
variable
Manejo de
excepciones
Lanzar
excepciones
El nombre de la variable inicia por
minúsculas o underscore ('_').
La primera asignación actúa como
declaración.
defined? variable
Retorna una descripción de la variable si
esta existe, nil de lo contrario.
begin
# Código que puede lanzar
# excepciones
rescue
# Código de manejo solo en
# caso de excepciones
ensure
# Código que se ejecuta
# hayan sucedido excepciones
# o no
end
retry intenta ejecutar el bloque begin
nuevamente.
raise “Mensaje de la excepción”
El mensaje de la excepción se puede
obtener posteriormente con la variable
$!.
Representación de
cadena de un
objeto
class miClase
def inspect
return “esta es la
representación”
end
end
$GLOBALS['nombre'] = valor;
class miClase
{
var $resultado;
function sumar($valor)
{
$this -> resultado =
$this -> resultado + $valor;
}
}
Inicialmente tiene el valor de null.
$nombre = $valor;
Depende del ámbito donde se utilice.
isset($variable)
Retorna true si existe la variable,
false de lo contrario.
try
{
# Código que puede lanzar
# excepciones
}
catch (ClaseExcepcion $e)
{
# Código de manejo solo en
# caso de excepciones
}
throw new Exception('Mensaje de
la excepción');
El mensaje de la excepción se puede
obtener posteiormente a través del
método getMessage() del objeto
Exception.
class miClase
{
function __toString()
{
return “esta es la
representación”;
Jorge Iván Meza Martínez <
[email protected]>
Comparación práctica de los lenguajes PHP y Ruby
obj = miClase.new
print obj
}
}
$obj = new miClase();
print ($obj);
Mas recursos:
1. Guía del usuario de Ruby. http://es.tldp.org/Manuales-LuCAS/doc-guia-usuario-
2. Ruby quick reference: http://www.digilife.be/quickreferences/QRC/Ruby
%20Language%20QuickRef.pdf
3. Ruby desde otros lenguajes: http://www.ruby-lang.org/es/documentation/ruby-from-
ruby/
other-languages/
Jorge Iván Meza Martínez <
[email protected]>
Comentarios de: comparacion práctica de los lenguajes php y ruby (0)
No hay comentarios