caracteristicas - ¿Qué significa $$(dólar dólar o doble dólar)en PHP?




descargar tutorial (6)

Evalúa el contenido de una variable como el nombre de otra. Básicamente le da la variable cuyo nombre está almacenado en $link .

Ejemplo es una declaración de variable dentro de una función:

global $$link;

¿Qué significa $$ ?


El $ interno resuelve la variable a una cadena, y la externa resuelve una variable con esa cadena.

Entonces, consideren este ejemplo

$inner = "foo";
$outer = "inner";

La variable:

$$outer

equivaldría a la cadena "foo"


Crea un nombre de variable dinámico. P.ej

$link = 'foo';
$$link = 'bar';    // -> $foo = 'bar'
echo $foo;
// prints 'bar'

(también conocido como variable variable )


Es la variable de una variable .

<?php
$a = 'hello';
$$a = 'world'; // now makes $hello a variable that holds 'world'
echo "$a ${$a}"; // "hello world"
echo "$a $hello"; // "hello world"
?>

Una sintaxis como $$variable se llama Variable Variable .


Por ejemplo, si considera esta parte del código:

$real_variable = 'test';
$name = 'real_variable';
echo $$name;

Obtendrá el siguiente resultado:

test


Aquí :

  • $real_variable contiene prueba
  • $name contiene el nombre de tu variable: 'real_variable'
  • $$name significa " la variable thas tiene su nombre en $name "
    • Cuál es $real_variable
    • Y tiene el valor 'test'


EDITAR después del comentario de @Jhonny:

¿Haciendo un $$$ ?
Bueno, la mejor manera de saber es intentar ;-)

Entonces, probemos esta porción de código:

$real_variable = 'test';
$name = 'real_variable';
$name_of_name = 'name';

echo $name_of_name . '<br />';
echo $$name_of_name . '<br />';
echo $$$name_of_name . '<br />';

Y aquí está la salida que obtengo:

name
real_variable
test

Entonces, yo diría que sí, puedes hacer $$$ ;-)


Por lo general, se considera una buena práctica establecer la visibilidad más baja requerida, ya que esto promueve la encapsulación de datos y un buen diseño de la interfaz. Al considerar la variable de miembro y la visibilidad del método, piense en el papel que desempeña el miembro en la interacción con otros objetos.

Si usted "codifica una interfaz en lugar de una implementación", generalmente es bastante sencillo tomar decisiones de visibilidad. En general, las variables deben ser privadas o protegidas a menos que tenga una buena razón para exponerlas. Utilice los accesores públicos (captadores / setters) en lugar de limitar y regular el acceso a los aspectos internos de una clase.

Para usar un automóvil como una analogía, las cosas como la velocidad, la marcha y la dirección serían variables de instancia privada. No desea que el conductor manipule directamente cosas como la relación aire / combustible. En cambio, expones un número limitado de acciones como métodos públicos. La interfaz de un automóvil puede incluir métodos como accelerate() , deccelerate() / brake() , setGear() , turnLeft() , turnRight() , etc.

El conductor no sabe ni debe importarle cómo se implementan estas acciones en el interior del automóvil, y exponer esa funcionalidad podría ser peligroso para el conductor y otras personas en la carretera. De ahí la buena práctica de diseñar una interfaz pública y encapsular los datos detrás de esa interfaz.

Este enfoque también le permite alterar y mejorar la implementación de los métodos públicos en su clase sin romper el contrato de la interfaz con el código del cliente. Por ejemplo, podría mejorar el método de accelerate() para que sea más eficiente en el consumo de combustible, pero el uso de ese método seguirá siendo el mismo; el código del cliente no requeriría cambios, pero aún así obtendría los beneficios de su mejora de eficiencia.

Edición: como parece que todavía estás en medio de aprender conceptos orientados a objetos (que son mucho más difíciles de dominar que la sintaxis de cualquier idioma), te recomiendo encarecidamente que recojas una copia de Objetos, patrones y práctica de PHP de Matt Zandstra. Este es el libro que primero me enseñó a usar la POO de manera efectiva, en lugar de enseñarme la sintaxis. Había aprendido la sintaxis años antes, pero eso era inútil sin entender el "por qué" de la POO.





php