【发布时间】:2012-10-23 20:24:21
【问题描述】:
假设我创建了一个全局变量 global $db3; ($db3其实是另一个类的实例化对象)。与其把这个全局变量一一传递给每个方法,我想把这个变量默认传递给一个类的所有方法。
我的第一个数据库类是 as
class dtb{
public $connection;
public function __construct(){
$this->connection=mysqli_connect('localhost','root','','new5');
}
}
$db3=new dtb();
二等舱是
session_start();
$a = new session($db3);
class user{
public $db;
public function __construct($db)
{
$this->db = $db;
}
function login(){
//global $db3;
//$db3->show_new();
$results=mysqli_query($this->db->connection,"select * from user"); //(I want to use $db3 of another class here as resource link)
}
}
【问题讨论】:
-
使用构造函数并将$db设置为类变量,那么它将在所有方法中都可用$this->db
-
强烈不推荐使用这样的全局变量。当您无法确定谁编辑了全局变量上的内容时,事情很快就会失控,这会影响您程序的其余部分。
-
如果在全局范围内将其声明为
global,则可以在任何地方以$GLOBALS['db3']获取它。 -
@Claudrian:静态变量 === 全局变量。
-
@Claudrian:错了,我可以从程序中的任何地方调用
class::$static。它不与otherclass::$static碰撞的事实可以与global $class_static不与global $otherclass_static碰撞的事实相比较。