Есть ли способ создать свои собственные суперглобальные переменные, такие как $_POST и $_GET?
Создать суперглобальные переменные в php?
Ответ 1
Переменные статического класса можно ссылаться глобально, например:
class myGlobals {
static $myVariable;
}
function a() {
print myGlobals::$myVariable;
}
Ответ 2
Да, это возможно, но не с так называемыми "основными" функциональными возможностями PHP. Вы должны установить расширение под названием runkit: http://www.php.net/manual/en/runkit.installation.php
После этого вы можете установить свои пользовательские суперглобальные блоки в php.ini, как описано здесь: http://www.php.net/manual/en/runkit.configuration.php#ini.runkit.superglobal
Ответ 3
Я думаю, что у вас уже есть это - каждая переменная, которую вы создаете в глобальном пространстве, может быть доступна с помощью $GLOBALS suberglobal, как это:
// in global space
$myVar = "hello";
// inside a function
function foo() {
echo $GLOBALS['myVar'];
}
Ответ 4
Другим способом обойти эту проблему является использование метода или переменной статического класса.
Например:
class myGlobals {
public static $myVariable;
}
Затем в ваших функциях вы можете просто ссылаться на свою глобальную переменную следующим образом:
function Test()
{
echo myGlobals::$myVariable;
}
Не так чисто, как некоторые другие языки, но по крайней мере вам не нужно постоянно объявлять его глобальным.
Ответ 5
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();
Ответ 6
Не совсем. хотя вы можете просто злоупотреблять теми, которые есть, если вы не против уродства.
Ответ 7
Нет
Есть только встроенные суперглобалы, перечисленные в данное руководство
Ответ 8
Вы также можете использовать переменные среды на сервере и обращаться к ним в PHP Это хороший способ хранения глобального доступа к базе данных, если вы владеете и используете исключительно сервер.
Ответ 9
возможный обходной путь с $GLOBALS
:
file.php:
$GLOBALS['xyz'] = "hello";
any_included_file.php:
echo $GLOBALS['xyz'];