2012-02-13 67 views
4

使用ZF快速入门create model作为此主题的基础。
我想明白在这种情况下,__construct和setOptions()方法应该做什么。
无论多少次我砰的一声,我都不知道这两种方法在做什么。Zend Framework Quickstart模型构造函数

public function __construct(array $options = null) 
    { 
     //if it is an array of options the call setOptions and apply those options 
     //so what? What Options 
     if (is_array($options)) { 
      $this->setOptions($options); 
     } 
    } 

public function setOptions(array $options) 
    { 
     //I can see this starts by getting all the class methods and return array() 
     $methods = get_class_methods($this); 
     //loop through the options and assign them to $method as setters? 
     foreach ($options as $key => $value) { 
      $method = 'set' . ucfirst($key); 
      if (in_array($method, $methods)) { 
       $this->$method($value); 
      } 
     } 
     return $this; 
    } 

我真的迷失在setOptons()上,我无法弄清楚它试图完成什么。我明白这是抽象的一些行为,我不能完全理解。
据我所知,这只是这么多而已!我想理解它,因为它可能很重要。

回答

4

如果传递$options作为阵列

{ ["name"] => "RockyFord" } 

然后setOptions方法将调用

setName("RockyFord"); 

如果setName方法在这个类的存在。

foreach ($options as $key => $value) { // Loops through all options with Key,Value 
     $method = 'set' . ucfirst($key); // $method becomes 'setName' if key is 'name' 
     if (in_array($method, $methods)) { // Check if this method (setName) exists in this class 
      $this->$method($value); // Calls the method with the argument 
     } 
    } 
+0

谢谢,我突然明白了。这允许我们传递一个数组,而不是明确地调用get *或set * – RockyFord 2012-02-13 14:34:54