是否有可能将对象传递到一个PHP类的构造,并设定对象为可以由功能的其余部分中的类使用的全局变量?

例如:

class test {

   function __construct($arg1, $arg2, $arg3) {
      global $DB, $ode, $sel;

      $DB = arg1;
      $ode = arg2;
      $sel = $arg3;
   }

   function query(){
      $DB->query(...);
   }

}

当我尝试这样做,我得到一个“调用一个成员函数的非对象”的错误。反正有做到这一点?否则,我必须的对象直接进入每个独立的功能。

谢谢!

有帮助吗?

解决方案

您可能想将它们分配到值上$this

在你的构造函数,你会怎么做:

$this->DB = $arg1;

然后在您的查询功能:

$this->DB->query(...);

这同样应与其他参数来完成,以你的构造。

$this在一个实例上下文是您如何引用当前实例。分别还有关键字parent::self::超类的访问成员和类的静态成员。

其他提示

作为一个侧面记事...,点击 甚至认为这不是需要,它通常被认为是最好的声明构件里面的类变量。它可以让你更好地控制他们:

<?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(...);
    }
}
?>

请参阅 PHP:对于细节可见private之间的差,protectedpublic

可以通过存储参数作为对象的属性做很容易地

function __construct($arg1, $arg2, $arg3) {
   $this->db = arg1;
}

function f()
{
  $this->db->query(...);
}

让我们假设你有一个数据库对象

$db = new db();

和另一个目的:

$object = new object($db);

class object{

    //passing $db to constructor
    function object($db){

       //assign it to $this
       $this-db = $db;

    }

     //using it later
    function somefunction(){

        $sql = "SELECT * FROM table";

        $this->db->query($sql);

    }

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top