2011-12-30 161 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不关心它的类型。