Помогите понять аксессоры.

Nathan

Новичок
Сейчас разбираюсь с этими чудо зверьками ))) И немного недопонимаю их... помогите разобраться на моем примере.
Предположим есть класс:

PHP:
class BrowserHints
{
    private $IEHints = 0;
    private $OperaHints = 0;
    private $NetscapeHints = 0;
    
    public function setIEHints($num)
    {
        if($num<0) $this->IEHints = 0;
        else $this->IEHints = $num;        
    }
    
    public function setOperaHints($num)
    {
        if($num<0) $this->OperaHints = 0;
        else $this->OperaHints = $num;        
    }
    
    public function setNetscapeHints($num)
    {
        if($num<0) $this->NetscapeHints = 0;
        else $this->NetscapeHints = $num;        
    }
    
    public function printInfo()
    {
        $totalHints = $this->IEHints + $this->NetscapeHints + $this->OperaHints;
        echo "<table width=100% border=1>";
        echo "<tr><td>&nbsp;</td><td>Хиты</td><td>Процент</td></tr>";
        echo "<tr>
                <td>Internet Explorer</td>
                <td>$this->IEHints</td>
                <td>".sprintf("%01.1f%s",$this->IEHints/$totalHints * 100,'%') ."</td>
              </tr>";                
                
        echo "<tr>
                <td>Opera</td>
                <td>$this->OperaHints</td>
                <td>".sprintf("%01.1f%s",$this->OperaHints/$totalHints * 100,'%')."</td>
              </tr>";
                        
        echo "<tr>
                <td>Netscape</td>
                <td>$this->NetscapeHints</td>
                <td>".sprintf("%01.1f%s",$this->NetscapeHints/$totalHints * 100,'%')."</td>
              </tr></table>";
    }
    
}

$obj = new BrowserHints;
$obj->setIEHints(50);
$obj->setNetscapeHints(200);
$obj->setOperaHints(10);

$obj->printInfo();
Как теперь этот же код реализовать с помощью аксессоров ?
 

zerkms

TDD infected
Команда форума
1. Акцессор - это просто метод, который возвращает значение свойства
public function getFoo()
{
return $this->foo;
}

2. Акцессоры в подавляющем большинстве нужны сторонним классам. Со своими свойствами класс пусть работает напрямую, ничего в этом плохого нет
3. Лучше всё таки генерировать строку и возвращать её, а не echo'ать
 

fixxxer

К.О.
Партнер клуба
2. Акцессоры в подавляющем большинстве нужны сторонним классам. Со своими свойствами класс пусть работает напрямую, ничего в этом плохого нет
Есть один случай, когда нужен - ленивая инициализация. Правда это не совсем акцессор :)
 
Сверху