Foros del Web » Programando para Internet » PHP »

operador ?:

Estas en el tema de operador ?: en el foro de PHP en Foros del Web. viendo el codigo del framework mas pekeño vi un operador que nunca antes habia visto que es ?: Alguien me podria decir para que sirve ...
  #1 (permalink)  
Antiguo 26/01/2009, 14:45
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 1 mes
Puntos: 1
operador ?:

viendo el codigo del framework mas pekeño vi un operador que nunca antes habia visto que es ?:

Alguien me podria decir para que sirve ese operador? googlie y no encuentro.
Se que esta apartir de la version php 5.3 pero ni idea.
-----------------

Framework mas pekeño
Código:
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
  throw new Exception('Error');
$c();
  #2 (permalink)  
Antiguo 26/01/2009, 14:51
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: operador ?:

Es un if-then-else "corto" por decirle asi.

Ejemplo:
Código PHP:
<?php
$var 
'hola';
echo (
$var == 'hola') ? 'dice hola' 'no dice hola';

//Es lo mismo que:
if($var == 'hola') {
  echo 
'dice hola';
} else {
  echo 
'no dice hola';
}
?>
  #3 (permalink)  
Antiguo 26/01/2009, 14:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: operador ?:

Hola BeRMaNyA,

Es para hacer un if corto:
Código php:
Ver original
  1. $foo = (bar() ? $true : $false);

Esta disponible desde antes de PHP4, no es nuevo de PHP5.3

Saludos
  #4 (permalink)  
Antiguo 26/01/2009, 14:56
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: operador ?:

eso lo conoscoo, peroooo todoo juntoooo ?:

como en esta linea de codigoo:

if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))



Cita:
Why PHP 5.3?

Twitto uses several new features available as of PHP 5.3:

* The __DIR__ constant
* The ?: operator
* Anonymous functions
http://www.twitto.com
  #5 (permalink)  
Antiguo 26/01/2009, 15:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: operador ?:

Se refiere a ?: , lo que pasa es que a partir de PHP5.3 es opcional el valor de true, y es para asegurarte de tener un valor por ejemplo si viene por POST:
Código php:
Ver original
  1. $nombre = $_POST['nombre'] ?: "nombre por defecto";

La parte de la función es una función anonima (o closure) que se pueden generar y asignar a una variable:
Código php:
Ver original
  1. $foo = function() { echo "bar"; }
  2. $foo();

Saludos
  #6 (permalink)  
Antiguo 26/01/2009, 16:56
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: operador ?:

Muy interesante, gracias por sacarme la duda GatorV
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:07.