entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

if con asignación de variable en PHP

En un código que tengo que depurar de una clase y encontre que se usa mucho un método "mágico" que lo logro comprender completamente.

/**
 * @return number|null
 */
private static function getAsociacionId() {
    $request = $this->getRequest();
    // Se busca el identificador en parametro definido por usuario.
    if( $aid = $request->getParam( 'aid', null ) ) return $aid;

    // Se busca en enviadopor POST
    if( $aid = $request->getPost( 'aid', null ) ) return $aid;

    // Se busca enviado por GET
    if( $aid = $request->getQuery( 'aid', null ) ) return $aid;

    // Se busca en Cookie
    if( $aid = $request->getCookie( 'aid', null ) ) return $aid;

    // No se encontro NULL
    return NULL;
}

El codigo no lo termino de entender o como es que funciona ya que se me hace raro la asignación dentro del IF y se retorna inmediatamente el valor no es NULL (falso)

2 Respuestas

0voto

pity7736 Puntos860

Buenas, yo de php no se, pero lo que "logro entender" es que el busca el $aid por peticiones http get, post o en cookiee, como dice en los comentarios, y si no está el valor para el $aid es null, y luego retorna $aid.

2votos

Leonardo-Tadei Puntos227320

Hola mrgenis,

faltaría ver el código del método $this->getRequest() para ver lo que hace. Supongo que será en realidad otra clase que implementa los 4 get para recibir datos desde los clientes.

Asumiendo que el método $request->getPost('hola') devuelve el elemento 'hola' del vector $_POST o NULL si no está asignado, la evaluación del IF quedaría:

if( $var = 'un valor') ...

o

if( $var = NULL) ...

En el primer caso, se asigna 'un valor' a la variable $var y la evaluación de la asignación da Verdadero, porque se asignó un valor.

En el segundo caso se asigna NULL a la variable $var y la evaluación de una signación nula devuleve Falso.

Entonces lo que el código hace es intentar asignar un valor a $aid, y si lo consigue, sale de la función sin intentarlo con los demás. Si nada de esto pasa, llega hasta el final y devuelve NULL.

Se ve raro, pero es exactaemnte lo mismo al muy usado:

while ($reg = mysqli_fetch_array($resource) ) {...

que seguramente has visto y usado muchas veces. Mientras que haya algún valor que asignar a $reg, la asignación da Verdadero, pero al terminar los valores, mysqli_fetch_array() devuelve Falso (que funciona igual que NULL en tu caso) haciendo que se termine la ejecución del bucle.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta