【问题标题】:What's the difference between these PHP variables?这些 PHP 变量有什么区别?
【发布时间】:2012-01-30 10:14:14
【问题描述】:

我有以下课程:

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 似乎是一个标准变量,而不是“参数变量”——我希望我使用的是正确的语言。为什么这个也没有定义?为什么在这个类中这样使用它?

我真的希望了解这些人之间的区别,以便更好地使用它们。

提前感谢您的帮助!

【问题讨论】:

    标签: php oop variables properties


    【解决方案1】:
    private $connection;
    public $last_query;
    private $magic_quotes_active;
    private $real_escape_string_exits;
    

    上面的变量是你的类的成员变量。它们在您的类的任何函数中都可用,并且可以通过 $this-> 访问。

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

    【讨论】:

    • 优秀。谢谢你。也感谢其他人:-)
    【解决方案2】:

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

    $result 在您为其分配某些内容时被定义。在 PHP 中,你不需要声明变量来使用它们,但你需要声明类字段。

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

    【讨论】:

      【解决方案3】:

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

      但是,$last_query 定义为您的类的属性。您可以在课堂上的任何地方访问它,因此您必须像 $this->last_query 一样指向它;

      http://www.killerphp.com/tutorials/object-oriented-php/ 是一个很好的 PHP 面向对象编程的简单教程。看看吧……

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-28
          • 1970-01-01
          • 1970-01-01
          • 2018-06-13
          • 2013-01-16
          • 1970-01-01
          • 2018-08-25
          相关资源
          最近更新 更多