Из документации здесь:
http://framework.zend.com/manual/en/learning.quickstart.create-model.html
Мы видим:
// application/models/Guestbook.php
class Application_Model_Guestbook
{
protected $_comment;
protected $_created;
protected $_email;
protected $_id;
public function __construct(array $options = null)
{
if (is_array($options)) {
$this->setOptions($options);
}
}
public function __set($name, $value)
{
$method = 'set' . $name;
if (('mapper' == $name) || !method_exists($this, $method)) {
throw new Exception('Invalid guestbook property');
}
$this->$method($value);
}
public function __get($name)
{
$method = 'get' . $name;
if (('mapper' == $name) || !method_exists($this, $method)) {
throw new Exception('Invalid guestbook property');
}
return $this->$method();
}
public function setOptions(array $options)
{
$methods = get_class_methods($this);
foreach ($options as $key => $value) {
$method = 'set' . ucfirst($key);
if (in_array($method, $methods)) {
$this->$method($value);
}
}
return $this;
}
... following getters and setters...
Я не понимаю, и это не объясняется (возможно, потому что это легко), что это делает и зачем нам нужен метод setOptions ?
Я пытаюсь следовать этому руководству, но я не могу слепо вставлять код, не зная причины его существования. Я буду счастлив с моделью, содержащей только геттеры и сеттеры, но, возможно, все это не сработает, если я не буду использовать этот метод setOptions. Я обеспокоен, потому что вижу это на конструкторе, поэтому, должно быть, это важно как-то.
Может ли кто-нибудь помочь мне разобраться, если нам это действительно нужно, и если да, что это значит?
Заранее спасибо.