Blog de programación, errores, soluciones

Variables, funciones y objetos variables en PHP ($$)

contenido:

Introducción

El hacer el nombre de una función variable o un objeto variable nos da cierta capacidad de utilizar funciones y objetos de cierta manera en que no lo habíamos pensado antes y si lo habíamos hecho comprenderá las ventajas que podemos tener al hacer esto.

Pensando en que ya ha leído los anteriores temas de PHP-101 o entendiendo que ya sabe lo que es una función y lo que es un objeto tocaremos el tema de hacerlos variables.

Variables variables

Por si mismo el manual de php nos dice que para crear una variable variable debemos hacer lo siguiente:

$home = "HappyDreams";
$$home = "casa en las afueras de la ciudad de Michigan";
//$$home es igual a poner $HappyDreams
//$HappyDreams contiene el valor de "casa en las afueras de la ciudad de Michigan"

Las variables variables son un tanto distintas al usar un array, ya que debemos indicarle a que nos referimos si al índice o al nombre de la variable.

Ejemplo.

Esto $$casas[«nombreCasa»] yo quiero hacer $$ de casa o de casa[«nombreCasa»] para evitar esto en los array debemos agregar estos corchetes { }.

  • si quiero referirme a casa deberia hacer lo siguiente ${$casa}[«nombreCasa»]
  • y si deseo referirme a casa[«nombreCasa»] debo hacer lo siguiente ${$casa[«nombreCasa»]}

Funciones Variables o nombre de funciones variables

En una función es simple teniendo varias funciones podemos decidir cual usar con $name(); llamando la función que queremos.

Ejemplo una calculadora simple

<?php
error_reporting(E_ALL); 
ini_set("display_errors", 1); 
function restar($args){
    $resta = 0;
    foreach($args as $key => $valor){
        if($key == 0){
            $resta = $valor;
            continue;
        }
        $resta -=$valor;
    }
    return $resta;
}
function sumar($args){
    $suma=0;  
    foreach($args as $valor){
        $suma +=$valor;
    }
    return $suma;
}

    $args=[10,4];
    $function = "sumar";
    echo "la suma de a + b es :".$function($args)."<br/>";
    $function = "restar";
    echo "la resta de a - b es: ".$function($args)."<br/>";

Tenga en cuenta que si hago $funcion podría evitar hacer un if o un switch, ya que llamo a una función directamente con lo que hago. si el valor me viniera de un formulario HTML directamente podría hacer un try catch a $function() por si no existe tal función.

Objetos Variables o mejor dicho instancia de objetos variables

Las instancias de los objetos también pueden ser variables por ejemplo dado un url le podríamos decir que haga una instancia de tal objeto.

por ejemplo «si tengo la URL:localhost/miproyecto/index.php/usuario/nuevo»

Podríamos decirle que llame al controlador usuario y la funcion nuevo dentro de un try catch claro esta si no existe que tire algun error.

<?php
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

class car{
    function show(){
        return "A fake car";
    }
}

$URL = $_SERVER['REQUEST_URI'];
$myindex = __DIR__."/";
$URL = substr($URL,strpos($URL,"index.php") + 10);

$result= explode('/',$URL);
$obj = $result[0];
$function = $result[1];

try{
    $controller = New $obj();
    echo $controller->$function();
}catch(Exeption $e){
   echo $e;
}

Muy Básicamente de esta manera seria como funciona un Framework MVC de hoy día. Simplemente tome uno como codeigniter y mire su index.php principal, probablemente tenga algo como esto obviamente más complejo.

Ayudame: Por favor deja un comentario antes de irte, tu opinión es bienvenida. Si te gusta el contenido comparte.
Last 4 post in same category