Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

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

Veremos a la utilización de $$ con diferentes propósitos en la programación 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 sí mismo, el manual de PHP nos dice que para crear una variable variable debemos hacer lo siguiente:

Variables varaibles
$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 cuál usar con $name(); llamando la función que queremos.

Ejemplo una calculadora simple

funciones variables
<?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 trycatch 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 URI le podríamos decir que haga una instancia de tal objeto.

Por ejemplo, si tengo la URI:localhost/miproyecto/index.php/usuario/nuevo

Podríamos decirle que llame al controlador usuario y la función nueva dentro de un try-catch claro está si no existe que tire algún error.

index.php / Objetos variables
<?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 sería como funciona un Framework MVC de hoy día. Si tomamos un framework como CodeIgniter y miramos su index.php principal, probablemente tenga algo como lo anteriormente visto obviamente más complejo.

Vea: enrutamiento en PHP

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category