PHP - 访问类的所有函数中的全局变量

Jay*_*Jay 3 php

我需要在类的大多数函数中访问外部php文件的一些变量.我正在以下列方式访问(它工作正常)

class test{

function a(){ 
    global $myglobalvar ;
    ..
    ..
    }

function b(){ 
    global $myglobalvar ;
    ..
    ..
    }

function c(){ 
    global $myglobalvar ;
    ..
    ..
    }

}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在类的所有函数中访问$ myglobalvar而不在每个函数中声明?我确实读过它可以通过在类的构造函数中只声明一次来完成,但我不知道该怎么做.谢谢你的帮助.

Pri*_*ner 14

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
Run Code Online (Sandbox Code Playgroud)

  • @RDL这个设计的重点是通过构造函数传递全局,以便对象的作用域被适当地隔离,并且不依赖于外部资源的特定命名.促进重用. (3认同)

mar*_*rio 5

您可以在构造函数中创建对全局变量的引用(很像global):

class test{

    function __construct() { 
        $this->myglobalvar = & $GLOBALS["myglobalvar"];
Run Code Online (Sandbox Code Playgroud)

然后允许$this->myglobalvar在每个方法中访问全局通过。

  • 当然可以,但为什么要教人们代码闻起来像那样? (3认同)