get — защищенные переменные и метод php __get

Я новый ученик 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() Вы ничего не устанавливаете. Кроме того, вы ничего не возвращаете, чтобы это ничего не отражало.
  2. В __get() ты возвращаешься $this->count но вы нигде не устанавливали его, так что, по-видимому, это ничего не отражает.

Может быть, где-то вы хотите:

$this->count = mysql_results($rs, 0, 0);
1

Другие решения

В этом случае, getCount() это специальный метод для подсчета ogrenci,

__get() принадлежит к семейству «магических методов», используется для чтения данных из недоступных свойств.

Вы можете прочитать больше информации о волшебном методе в документации http://php.net/manual/en/language.oop5.overloading.php#object.get

Вы не должны использовать __get чтобы посчитать что-то в PHP, вы должны сохранить getCount метод.

1

По вопросам рекламы [email protected]