我有以下课程:
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)
,我对所看到的内容感到困惑。
$sql
变量没有在此处定义,我相信它是一个参数变量,因为在我的IDE中,它与其他变量的颜色略有不同。这是什么意思,为什么会有所不同?$this->last_query
也是一个变量,但需要在类中定义,如类本身顶部所示。为什么需要这样定义,而$sql
变量不是?$result
似乎是一个标准变量,而不是“参数变量” - 我希望我使用正确的语言。为什么这个也没有定义?为什么在这个类中使用它?我真的希望了解这些家伙之间的差异,以便我能更好地使用它们。
先谢谢你的帮助!
答案 0 :(得分:1)
$sql
是一个参数变量。每当您想要执行该函数中的代码时,您必须通过将其作为argument传递来指定$sql
应该是什么。
$result
会被定义。在PHP中,您不需要声明变量来使用它们,但您需要声明类字段。
我建议您在继续之前阅读一些PHP教程。
答案 1 :(得分:1)
$sql
是query
函数的参数。默认情况下,它不需要声明在整个类块中工作。不要忘记您无法访问将其指向项目中的类属性。
但是,$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->
访问它们。
$sql
是query
函数的参数,意味着它的作用域仅在此函数内,不能从任何其他函数中访问。这同样适用于局部变量$result
。它也只能在query
函数中使用。
答案 3 :(得分:1)
看。与javascript一样,PHP是一种松散类型的语言。变量的类型可以动态更改。所以我们不需要显式声明变量的类型(int / String / char / byte)。
$ sql作为参数传递。 PHP并不关心它的类型。