2011-12-30 202 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)表示,我被我所看到的迷惑了。

  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 2011-12-30 08:10:46

1

$sql是一個參數變量。無論何時您想執行該函數中的代碼,都必須通過將其作爲argument傳遞給$sql

$result成爲當你分配的東西給它定義。在PHP中,你不需要聲明變量來使用它們,但你確實需要聲明類字段。

我建議你在繼續之前閱讀一些PHP教程。

1

$sqlquery函數的參數。它不需要聲明在默認情況下可以在整個班級中使用。不要忘記,你不能在項目中指定它作爲類屬性。

但是,$last_query定義爲類的屬性。您可以在班級中的任何地方訪問它,因此,您必須指向它,如$this->last_query;

http://www.killerphp.com/tutorials/object-oriented-php/是在PHP OOP好簡單的教程。看看它...

1

看。PHP和javascript一樣,是一種鬆散類型的語言。變量的類型可以動態改變。所以我們不需要顯式地聲明變量的類型(int/String/char/byte)。

$ sql作爲參數傳遞。 PHP不關心它的類型。