这些PHP变量之间有什么区别?

时间:2011-12-30 07:36:06

标签: php oop variables properties

我有以下课程:

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似乎是一个标准变量,而不是“参数变量” - 我希望我使用正确的语言。为什么这个也没有定义?为什么在这个类中使用它?
  4. 我真的希望了解这些家伙之间的差异,以便我能更好地使用它们。

    先谢谢你的帮助!

4 个答案:

答案 0 :(得分:1)

$sql是一个参数变量。每当您想要执行该函数中的代码时,您必须通过将其作为argument传递来指定$sql应该是什么。

当您为其分配内容时,

$result会被定义。在PHP中,您不需要声明变量来使用它们,但您需要声明类字段。

我建议您在继续之前阅读一些PHP教程。

答案 1 :(得分:1)

$sqlquery函数的参数。默认情况下,它不需要声明在整个类块中工作。不要忘记您无法访问将其指向项目中的类属性。

但是,$last_query被定义为您班级的属性。您可以在班级的任何地方访问它,因此您必须指向$this->last_query;

http://www.killerphp.com/tutorials/object-oriented-php/是一个很好的PHP简单OOP教程。看一看......

答案 2 :(得分:1)

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

以上变量是您班级的成员变量。它们可以在您班级的任何功能中使用,可以使用$this->访问它们。

$sqlquery函数的参数,意味着它的作用域仅在此函数内,不能从任何其他函数中访问。这同样适用于局部变量$result。它也只能在query函数中使用。

答案 3 :(得分:1)

看。与javascript一样,PHP是一种松散类型的语言。变量的类型可以动态更改。所以我们不需要显式声明变量的类型(int / String / char / byte)。

$ sql作为参数传递。 PHP并不关心它的类型。