質問

クラスの関数の残りの部分で使用することができるグローバル変数

として

は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(...);
    }
}
?>
privateの違いの詳細については、可視性で:

PHPを参照してください。 、protectedpublicます。

あなたは、オブジェクトのプロパティとして引数を格納することで、かなり簡単にそれを行うことができます:

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

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

あなたがDBオブジェクト

を持っているとしましょう
$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);

    }

}
scroll top