setOptions($options); } else if ($options instanceof Zend_Config) { $this->setOptions($options->toArray()); } } /** * Set options from array * * @param array $options Configuration for resource * @return Zend_Application_Resource_ResourceAbstract */ public function setOptions(array $options) { foreach ($options as $key => $value) { if (in_array(strtolower($key), $this->_skipOptions)) { continue; } $method = 'set' . strtolower($key); if (method_exists($this, $method)) { $this->$method($value); } if ('bootstrap' == $key) { unset($options[$key]); } } $this->_options = $this->mergeOptions($this->_options, $options); return $this; } /** * Retrieve resource options * * @return array */ public function getOptions() { return $this->_options; } /** * Merge options recursively * * @param array $array1 * @param mixed $array2 * @return array */ public function mergeOptions(array $array1, $array2 = null) { if (is_array($array2)) { foreach ($array2 as $key => $val) { if (is_array($array2[$key])) { $array1[$key] = (array_key_exists($key, $array1) && is_array($array1[$key])) ? $this->mergeOptions($array1[$key], $array2[$key]) : $array2[$key]; } else { $array1[$key] = $val; } } } return $array1; } /** * Set the bootstrap to which the resource is attached * * @param Zend_Application_Bootstrap_Bootstrapper $bootstrap * @return Zend_Application_Resource_Resource */ public function setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) { $this->_bootstrap = $bootstrap; return $this; } /** * Retrieve the bootstrap to which the resource is attached * * @return null|Zend_Application_Bootstrap_Bootstrapper */ public function getBootstrap() { return $this->_bootstrap; } }