61 votes

créer des variables superglobal en php?

Existe-t-il un moyen de créer mes propres variables superglobales personnalisées telles que $ _POST et $ _GET?

51voto

Scott Reynen Points 2964

Les variables de classe statiques peuvent être référencées globalement, par exemple:

 class myGlobals {

   static $myVariable;

}

function a() {

  print myGlobals::$myVariable;

}
 

36voto

Piero Mori Points 11

Oui, c'est possible, mais pas avec la soi-disant "de base" des fonctions PHP. Vous devez installer une extension appelée runkit: http://www.php.net/manual/en/runkit.installation.php

Après cela, vous pouvez configurer votre personnalisé superglobales en php.ini comme indiqué ici: http://www.php.net/manual/en/runkit.configuration.php#ini.runkit.superglobal

18voto

OneNerd Points 2972

Je pense que vous l'avez déjà - chaque variable que vous créez dans l'espace global est accessible à l'aide du suberglobal $ GLOBALS comme ceci:

 // in global space
$myVar = "hello";

// inside a function
function foo() {
    echo $GLOBALS['myVar'];
}
 

7voto

Guntarss Points 21
   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();

6voto

Dori Points 185

Pas assez de représentants pour commenter pour le moment, donc si quelqu'un veut poster ceci en tant que commentaire à James C, ce serait génial. Je voulais juste clarifier, à partir du manuel php :

 If the deprecated register_globals directive is set to on then... 
$_POST['foo'] would also exist as $foo
 

Notez les obsolètes , mais notez également la légitimité de la réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X