使用以下作为示例($ db是以前创建的数据库连接对象)...
Class Session {
function write_log () {
global $db;
$db->query(...);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法避免每次我想在另一个类中使用$ db对象时写"global $ db"?换句话说,从一开始就将$ db对象声明为超全局.
传递$db给类构造函数:
class Session {
function __construct($db) {
$this->db = $db;
}
function write_log () {
$this->db->query(...);
}
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
$session = new Session($db);
Run Code Online (Sandbox Code Playgroud)
Superglobals是PHP提供的一组特定的内置变量,可以在任何地方访问,无需声明global:
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
Run Code Online (Sandbox Code Playgroud)
一般来说,不可能创建自己的超级全局.
但是,您可以$db在您的Session班级中添加成员,并参考$this->db:
class Session
{
public $db;
function __construct()
{
$this->db = ... // set up $db object
// ...
}
function write_log ()
{
$this->db->query(...);
}
}
Run Code Online (Sandbox Code Playgroud)