在php中使用什么而不是全局

时间:2011-05-30 03:21:00

标签: php

有没有其他方法,而不是每次我需要访问函数内的全局变量时使用全局?

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

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

  }
}

1 个答案:

答案 0 :(得分:6)

在普通的全局范围函数中,要么使用global关键字,要么使用$GLOBALS['db']超全局数组(这对于可读性而言是可取的)。另一种方法是将全局变量作为参数传递给函数。

在你的课堂上,最好的方法是依赖注入。您的类构造函数接收$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);
  }
}