我是PHP的新学习者。我真的需要帮助。你知道__get方法和getcount()方法之间有什么区别。我认为他们都做同样的事情,但我想知道是否存在关于可见性或其他问题。我正在分享代码。谢谢你们!
protected $count = null;
protected $max = null;
public function getCount(){
$rs = mysql_query("select count(*) from ogrenci");
$count = mysql_ results($rs, 0, 0);
mysql_free_result($rs);
}
public function __get($name) {
if($name == 'count') {
if($this->count == null) {
$rs = mysql_query("select count(*) from ogrenci");
$count = mysql_ results($rs, 0, 0);
mysql_free_result($rs);
}
return $this->count;
}
else if ($name == 'max')
{
//some code
}
}
}
$o=new Ogrenci();
echo $o->count;
echo $o->getCount();
答案 0 :(得分:1)
getCount()
中,您没有设置任何内容。此外,你没有返回任何东西,所以它不会回应任何东西。__get()
你正在返回$this->count
,但你没有把它放在任何地方,所以大概它不会回应任何东西。也许你想要的地方:
$this->count = mysql_results($rs, 0, 0);
答案 1 :(得分:1)
在这种情况下,getCount()
是一种从ogrenci
计算的自定义专用方法。
__get()
属于“魔术方法”系列,用于从不可访问的属性中读取数据。
您可以在文档http://php.net/manual/en/language.oop5.overloading.php#object.get
中阅读有关魔术方法的更多信息您不应该使用__get
来计算PHP中的内容,您应该保留getCount
方法。