2011-12-30 6 views
1

私は、次のクラスがあります。これらのPHP変数の違いは何ですか?

class MySQLDatabase 
{ 
    private $connection; 
    public $last_query; 
    private $magic_quotes_active; 
    private $real_escape_string_exits; 

public function __construct()... 

// 1. OPENS connection and selects a DB 
public function open_connection()... 

// 2. PERFORMS a DB query 
public function query($sql) 
{ 
    $this->last_query = $sql; 
    $result = mysql_query($sql, $this->connection); 
    $this->confirm_query($result); 
    return $result; 
} 

.... 

注:私は私の質問に無関係のあるいくつかの行は、単にいくつかのコンテキストを貸すために含ま、それらがpublic function query($sql)を中心に...

で示されている、I私が見るものによって混乱している。

  1. 方法で$sql変数がここ以外の場所に定義されていない、と私はそれが他の変数とは少し異なった色のマイIDEのように、それは、パラメータ変数だと信じています。それはどういう意味ですか、それはなぜ違うのですか?
  2. $this->last_queryも変数ですが、クラス自体の先頭に表示されるように、クラス内で定義する必要があります。変数を定義しなければならないのはなぜですか?$sql変数はそうではありません。
  3. 最後に、$resultが標準変数で、パラメータ変数ではないようです。正しい言語を使用したいと思います。なぜこれも定義されていないのですか?なぜこのクラスでこのように使われているのですか?

私は本当にこれらの人の違いを理解したいと思っています。

ご協力いただきありがとうございます!

答えて

1
private $connection; 
public $last_query; 
private $magic_quotes_active; 
private $real_escape_string_exits; 

上記の変数は、あなたのクラスのメンバー変数です。彼らはあなたのクラスのあらゆる機能の中で利用でき、$this->でアクセスすることができます。

$sqlは、query関数のパラメータであり、スコープはこの関数内にのみあり、他の関数内からはアクセスできません。同じことがローカル変数$resultにも当てはまります。また、query機能内でのみ使用できます。

+0

優れています。ありがとうございました。みんなもありがとう:-) – Nathan

1

$sqlは、パラメータ変数です。その関数内にあるコードを実行したいときはいつでも、$sqlの内容をargumentとして渡すことで指定する必要があります。

$resultは、何かを割り当てたときに定義されます。 PHPでは、変数を宣言する必要はありませんが、クラスフィールドを宣言する必要があります。

先に進む前に、いくつかのPHPチュートリアルを読むことをお勧めします。

1

$sqlは、query関数の引数です。デフォルトでクラスブロック全体で作業することを宣言する必要はありません。プロジェクトのクラスプロパティとしてアクセスすることができないことを忘れないでください。

ただし、クラスのプロパティとして$last_queryが定義されています。クラス内のどこにでもアクセスすることができます。そのため、$this->last_queryのようにポイントする必要があります。

http://www.killerphp.com/tutorials/object-oriented-php/は、PHPのOOPの簡単なチュートリアルです。それを見てください...

1

見る。PHPは、javascriptのように、大まかに型付けされた言語です。変数の型は動的に変更できます。したがって、変数の型(int/String/char/byte)を明示的に宣言する必要はありません。

$ sqlがパラメータとして渡されます。 PHPはそのタイプについて気にしません。

関連する問題