Мне нужно получить доступ к некоторым переменным внешнего php-файла в большинстве функций класса. Я имею доступ следующим образом (и он отлично работает)
class test{ function a(){ global $myglobalvar ; .. .. } function b(){ global $myglobalvar ; .. .. } function c(){ global $myglobalvar ; .. .. } }
Есть ли способ, которым я могу получить доступ к $ myglobalvar во всех функциях класса без объявления в каждой функции? Я прочитал, что это можно сделать, объявив только один раз в конструкторе класса, но я не знаю, как это сделать. Спасибо за любую помощь.
class test{ private $myglobalvar; public function __construct($var){ $this->myglobalvar = $var; } function a(){ echo $this->myglobalvar; } function b(){ echo $this->myglobalvar; } function c(){ echo $this->myglobalvar; } } $test = new test("something"); $test->a(); // echos something $test->b(); // echos something $test->c(); // echos something
Вы можете создать ссылку на глобальную переменную в конструкторе (подобно global
):
class test{ function __construct() { $this->myglobalvar = & $GLOBALS["myglobalvar"];
Который затем разрешает aceess глобальному через $this->myglobalvar
в каждом методе.
Если вы расскажете нам больше об этом случае, мы сможем сказать вам лучший способ решить вашу проблему. По возможности следует избегать глобалов. Вы действительно говорите об переменной или больше похожи на параметр конфигурации, который остается неизменным во время всего сервера. В этом случае вы можете подумать о том, чтобы рассматривать его как параметр конфигурации и хранить его в объекте реестра (singleton).