我正在学习OOP。我的问题基于以下代码。每次使用$query_value->GetName()
或$query_value->GetId()
。
由于$query_value
?
在Class.php中
<?php
class OOP{
public $name,$id,$password
public function query(){
/* Query Performed
rowCount() = 1 */
$this->name = returned row value;
$this->id = returned row value;
$this->password= returned row value;
return $this; // [NOTE THIS ($this)]
}
public function GetName(){
return $this->name;
}
public function GetId(){
return $this->id;
}
}
在index.php中
<?php
$test= new OOP();
$query_value = $test->query();
// now returning values
echo $query_value->GetName();
/// Some Html
echo $query_value->GetId();
?>
答案 0 :(得分:1)
每次都运行mysql查询吗?(因为$ query_value)
不,它每次都没有运行查询。使用此语句$query_value = $test->query();
,您执行了一次查询,并使用$this->name
,$this->id
和$this->password
设置了实例属性。
在这些声明$query_value->GetName();
和$query_value->GetId();
中,您只需访问OOP
类的getter方法即可获取名称和< em> id 值,就是它。
答案 1 :(得分:1)
不,每次都没有查询,因为在实例化$ query_value变量时已经调用了初始query()函数。事实上你有一个obejct作为$ test你不应该需要一个额外的变量来回显这个值
$test = new OOP();
$test->query();
// echo out the values
echo $test->GetName();
echo $test->GetId();
然后你不需要在query()函数中返回$ this,因为$ test是对象变量并且已经设置了这些值。
答案 2 :(得分:1)
不,因为您只调用该功能一次。 GetName和GetId是该类的单独方法。
但我要做的是调用这样的getter方法:
echo $test->GetName();
echo $test->GetId();
理解起来要容易一些。并且您的query()方法会记录这些值。你所做的只是将你的班级分配给另一个变量。