2016-06-16 8 views
0

私はOOPを学んでいます。私の質問は以下のコードに基づいています。値が$query_value->GetName()または$query_value->GetId()を使用してindex.phpに返されるたびに、OOPでクエリ値を返す

$query_valueのために毎回MySQLクエリを実行していますか? index.phpの中Class.phpと

<?php 
class OOP{ 
    public $name,$id,$password 

    public function query(){ 
     /* Query Performed 
      rowCount() = 1 */ 
      $this->name = returned row value; 
      $this->id = returned row value; 
      $this->password= returned row value; 
      return $this; // [NOTE THIS ($this)] 

    } 
    public function GetName(){ 
     return $this->name; 
    } 
    public function GetId(){ 
     return $this->id; 
    } 
} 

<?php 
$test= new OOP(); 
$query_value = $test->query(); 
// now returning values 
echo $query_value->GetName(); 
/// Some Html 
echo $query_value->GetId(); 
?> 

答えて

1

は、それが毎回mysqlのクエリを実行している?

(の$ query_valueため)

いいえ、毎回クエリを実行していません。このステートメント$query_value = $test->query();を使用すると、照会に1回実行し、$this->name,$this->idおよびを使用してインスタンスのプロパティを設定しました。

そして、これらの文と$query_value->GetId();では、あなただけ名前IDに値を得るためにあなたのOOPクラスのgetterメソッドにアクセスしている、それはそれです。

+0

ありがとうございます!!!!!! –

1

いいえ、$ query_value変数をインスタンス化するときに、最初のquery()関数がすでに呼び出されているため、毎回クエリを実行していません。 $テストとしてあなたはobejctを持っているという事実を使用すると、値

$test = new OOP(); 
$test->query(); 

// echo out the values 

echo $test->GetName(); 
echo $test->GetId(); 

をエコーするために追加の変数を必要はありませんそして、あなたは$テスト以降のクエリ()関数内で$これを返す必要はありません。オブジェクト変数であり、すでにこれらの値が設定されています。

+0

ありがとう!!!!! –

1

あなたはその関数を1回だけ呼び出すため、いいえ。 GetNameとGetIdはそのクラスの別のメソッドです。

しかし、私はどうなることは、このような呼び出しのゲッターメソッドです:

echo $test->GetName(); 
echo $test->GetId(); 

それは理解することが少し簡単です。 query()メソッドはこれらの値をファイルします。あなたがしたのは、クラスを別の変数に割り当てただけです。

関連する問題