variable usar una paginas manejo globales funcion entre ejemplos ejemplo _session php global

usar - variables globales en php no funcionan como se esperaba



variables globales php ejemplos (7)

Debe colocar "$ pantalla global" en cada función que lo haga referencia, no solo en la parte superior de cada archivo.

Estoy teniendo problemas con las variables globales en php. Tengo un $screen var establecido en un archivo, que requiere otro archivo que llame a un initSession() definido en otro archivo. El initSession() declara global $screen y luego procesa $ pantalla más abajo utilizando el valor establecido en el primer script.

¿Cómo es esto posible?

Para hacer las cosas más confusas, si intentas configurar $ pantalla nuevamente y luego llamar a initSession() , usa el valor que se usó una vez más. El siguiente código describirá el proceso. ¿Podría alguien intentar explicar esto?

$screen = "list1.inc"; // From model.php require "controller.php"; // From model.php initSession(); // From controller.php global $screen; // From Include.Session.inc echo $screen; // prints "list1.inc" // From anywhere $screen = "delete1.inc"; // From model2.php require "controller2.php" initSession(); global $screen; echo $screen; // prints "list1.inc"

Actualizar:
Si declaro $screen global de nuevo justo antes de requerir el segundo modelo, $ screen se actualiza correctamente para el método initSession() . Extraño.


El alcance global abarca los archivos incluidos y los necesarios, no es necesario que use la palabra clave global a menos que use la variable desde dentro de una función. Podría intentar usar la matriz $ GLOBALS en su lugar.


Si tiene muchas variables a las que desea acceder durante una tarea que utiliza muchas funciones, considere la posibilidad de crear un objeto ''contextual'' para contener las cosas:

//We''re doing "foo", and we need importantString and relevantObject to do it $fooContext = new StdClass(); //StdClass is an empty class $fooContext->importantString = "a very important string"; $fooContext->relevantObject = new RelevantObject(); doFoo($fooContext);

Ahora solo pasa este objeto como un parámetro a todas las funciones. No necesitará variables globales y sus firmas de funciones se mantendrán limpias. También es fácil reemplazar el StdClass vacío con una clase que realmente tenga métodos relevantes.


global $foo no significa "hacer que esta variable sea global, para que todos puedan usarla". global $foo significa " dentro del alcance de esta función , use la variable global $foo ".

Supongo por su ejemplo que cada vez se refiere a $ pantalla desde dentro de una función. Si es así, deberá usar global $screen en cada función.


Debe declarar una variable como global antes de definir valores para ella.


Global NO hace que la variable sea global. Sé que es complicado :-)

Global dice que una variable local se usará como si fuera una variable con un alcance mayor .

P.EJ :

<?php $var = "test"; // this is accessible in all the rest of the code, even an included one function foo2() { global $var; echo $var; // this print "test" $var = ''test2''; } global $var; // this is totally useless, unless this file is included inside a class or function function foo() { echo $var; // this print nothing, you are using a local var $var = ''test3''; } foo(); foo2(); echo $var; // this will print ''test2'' ?>

Tenga en cuenta que los vars globales rara vez son una buena idea. Puede codificar 99.99999% del tiempo sin ellos y su código es mucho más fácil de mantener si no tiene ámbitos difusos. Evita global si puedes.


Es inútil hasta que esté en la función o una clase. Global significa que puede usar una variable en cualquier parte del programa. Entonces, si el global no está contenido en la función o en una clase, no se puede usar Global.