paginas - crear variables superglobales en php?
variables globales php entre paginas (9)
Creo que ya lo tienes: se puede acceder a todas las variables que creas en el espacio global utilizando el subtipo $ GLOBALS de la siguiente manera:
// in global space
$myVar = "hello";
// inside a function
function foo() {
echo $GLOBALS[''myVar''];
}
¿Hay alguna manera de crear mis propias variables superglobales personalizadas como $ _POST y $ _GET?
Las variables de clase estáticas se pueden referenciar globalmente, por ejemplo:
class myGlobals {
static $myVariable;
}
function a() {
print myGlobals::$myVariable;
}
Otra forma de evitar este problema es utilizar un método o variable de clase estática.
Por ejemplo:
class myGlobals {
public static $myVariable;
}
Luego, en sus funciones, simplemente puede referirse a su variable global de esta manera:
function Test()
{
echo myGlobals::$myVariable;
}
No es tan limpio como algunos otros idiomas, pero al menos no tienes que seguir declarándolo global todo el tiempo.
Otro posible truco con $GLOBALS
si es necesario en proyectos pequeños:
file.php: (donde defines tu " superglobal ")
$GLOBALS[''xyz''] = "hello";
any_included_file.php:
global $xyz; //only once enough in the start of the file/method
...
...
...
...
...
echo $xyz;
Realmente no. aunque puedes abusar de los que están ahí si no te importa lo feo que es.
Sí, es posible, pero no con las llamadas funcionalidades PHP "centrales". Debe instalar una extensión llamada runkit: http://www.php.net/manual/en/runkit.installation.php
Después de eso, puede configurar sus superglobales personalizados en php.ini como se documenta aquí: http://www.php.net/manual/en/runkit.configuration.php#ini.runkit.superglobal
También puede usar las variables de entorno del servidor y acceder a ellas en PHP. Esta es una buena forma de almacenar el acceso a la base de datos global si posee y utiliza exclusivamente el servidor.
No
Solo hay superglobales incluidos en este manual
Class Registry {
private $vars = array();
public function __set($index, $value){$this->vars[$index] = $value;}
public function __get($index){return $this->vars[$index];}
}
$registry = new Registry;
function _REGISTRY(){
global $registry;
return $registry;
}
_REGISTRY()->sampleArray=array(1,2,''red'',''white'');
//_REGISTRY()->someOtherClassName = new className;
//_REGISTRY()->someOtherClassName->dosomething();
class sampleClass {
public function sampleMethod(){
print_r(_REGISTRY()->sampleArray); echo ''<br/>'';
_REGISTRY()->sampleVar=''value'';
echo _REGISTRY()->sampleVar.''<br/>'';
}
}
$whatever = new sampleClass;
$whatever->sampleMethod();