在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']
的可读性更差,但这只是我的问题。谢谢你的回复。