是否可以将对象传递到PHP类的构造函数中,并将该对象设置为全局变量,以便该类中的其他函数可以使用该变量?
例如:
class test {
function __construct($arg1, $arg2, $arg3) {
global $DB, $ode, $sel;
$DB = arg1;
$ode = arg2;
$sel = $arg3;
}
function query(){
$DB->query(...);
}
}当我尝试这样做的时候,我得到了一个“调用非对象上的成员函数”错误。有没有办法做到这一点?否则,我必须将对象直接传递到每个单独的函数中。
谢谢!
发布于 2010-01-17 15:39:46
您可能希望将它们赋给$this上的值。
在您的构造函数中,您将执行以下操作:
$this->DB = $arg1;然后在你的查询函数中:
$this->DB->query(...);这同样应该通过构造函数的其他参数来完成。
实例上下文中的$this是引用当前实例的方式。还有关键字parent::和self::,分别用于访问超类的成员和类的静态成员。
发布于 2010-01-17 18:11:16
顺便说一句。
尽管这不是必需的,但通常认为最好在类中声明成员变量。它可以让你更好地控制它们:
<?php
class test {
// Declaring the variables.
// (Or "members", as they are known in OOP terms)
private $DB;
protected $ode;
public $sel;
function __construct($arg1, $arg2, $arg3) {
$this->DB = arg1;
$this->ode = arg2;
$this->sel = $arg3;
}
function query(){
$this->DB->query(...);
}
}
?>有关private、protected和public之间的区别的详细信息,请参阅PHP: Visibility。
发布于 2010-01-17 15:40:48
通过将参数存储为对象的属性,您可以很容易地做到这一点:
function __construct($arg1, $arg2, $arg3) {
$this->db = arg1;
}
function f()
{
$this->db->query(...);
}https://stackoverflow.com/questions/2080323
复制相似问题