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
- variables varibles
- Funciones Variables o nombre de funciones variables
- Objetos Variables o mejor dicho instancia de objetos variables
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 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 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.
<?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; }
- Anterior: Creando y manejando fechas en PHP
- Siguiente: #
Vea: enrutamiento en PHP