使用以下示例($ db是以前创建的数据库连接对象)...
Class Session {
function write_log () {
global $db;
$db->query(...);
}
}
有没有办法避免每次我想在另一个类中使用$ db对象时编写“global $ db”?换句话说,从一开始就将$ db对象声明为超全局。
答案 0 :(得分:6)
将$db
传递给类构造函数:
class Session {
function __construct($db) {
$this->db = $db;
}
function write_log () {
$this->db->query(...);
}
}
并将其命名为:
$session = new Session($db);
答案 1 :(得分:5)
Superglobals是由PHP提供的一组特定的内置变量,可以在任何地方访问,而无需使用global
声明:
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
一般情况下,无法创建自己的超全局。
但是,您可以在$db
课程中添加Session
成员,并转而使用$this->db
:
class Session
{
public $db;
function __construct()
{
$this->db = ... // set up $db object
// ...
}
function write_log ()
{
$this->db->query(...);
}
}