Existe-t-il un moyen de créer mes propres variables superglobales personnalisées telles que $ _POST et $ _GET?
Réponses
Trop de publicités?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
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();
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.