在php中使用什么代替全局

在php中使用什么代替全局,php,Php,每次我需要访问函数中的全局变量时,是否有其他方法代替使用全局变量 $db = new ezSQL_mysql("root", "", "payroll", "localhost"); class employee{ function get_emp(){ global $db; } } 在正常的全局作用域函数中,可以使用global关键字,也可以使用$GLOBALS['db']superglobal数组(为了可读性更好)。另一种方法是将全局变量作为参数传递到函数中 在您的类

每次我需要访问函数中的全局变量时,是否有其他方法代替使用全局变量

$db = new ezSQL_mysql("root", "", "payroll", "localhost");

class employee{
  function get_emp(){
    global $db;

  }
}

在正常的全局作用域函数中,可以使用
global
关键字,也可以使用
$GLOBALS['db']
superglobal数组(为了可读性更好)。另一种方法是将全局变量作为参数传递到函数中

在您的类中,最好的方法是依赖项注入。您的类构造函数将
$db
作为参数接收,这使它可用于所有类方法:

// $db was created at global scope
$db = new ezSQL_mysql("root", "", "payroll", "localhost");

class employee {
  public $db;

  // $db already created in your script is passed as a dependency
  // to the class constructor
  public function __construct($db) {
    $this->db = $db;
  }

  // Access it as $this->db inside the class
  public function get_emp() {
    do_something($this->db);
  }
}

呃,我不知道,在您的
员工
实例中存储对
$db
的引用?为什么首选
$GLOBALS['db']
而不是
global$db,这可能是重复的?我看到了,但那页没有告诉任何关于首选方法的信息。好的,我明白了。我想我会坚持使用
global
,因为我很少使用全局变量(我知道它们是什么)。另外,我发现
$GLOBALS['foo']
的可读性更差,但这只是我的问题。谢谢你的回复。