Я новый ученик 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();
getCount()
Вы ничего не устанавливаете. Кроме того, вы ничего не возвращаете, чтобы это ничего не отражало.__get()
ты возвращаешься $this->count
но вы нигде не устанавливали его, так что, по-видимому, это ничего не отражает.Может быть, где-то вы хотите:
$this->count = mysql_results($rs, 0, 0);
В этом случае, getCount()
это специальный метод для подсчета ogrenci
,
__get()
принадлежит к семейству «магических методов», используется для чтения данных из недоступных свойств.
Вы можете прочитать больше информации о волшебном методе в документации http://php.net/manual/en/language.oop5.overloading.php#object.get
Вы не должны использовать __get
чтобы посчитать что-то в PHP, вы должны сохранить getCount
метод.