是否有可用于消除约定样板代码的基础Zend类?
问题描述:
我在Zend Framework类中注意到的模式之一是与以下类似的代码。它可以在20-30个文件中。是否有可用于消除约定样板代码的基础Zend类?
public function __construct($options = null)
{
if (is_array($options)) {
$this->setOptions($options);
} elseif ($options instanceof Zend_Config) {
$this->setConfig($options);
}
// do custom initialization
$this->_init();
}
public function setOptions(array $options)
{
foreach ($options as $key => $value) {
$this->set($key, $value);
}
return $this;
}
public function set($property, $value)
{
if (!is_string($property) || empty($property)) {
require_once 'Zend/Navigation/Exception.php';
throw new Exception('Invalid argument: $property must be a non-empty string');
}
$method = 'set' . self::_normalizePropertyName($property);
if ($method != 'setOptions' && $method != 'setConfig' &&
method_exists($this, $method)) {
$this->$method($value);
} else {
$this->_properties[$property] = $value;
}
return $this;
}
当我开发自己的班级时,我也放了类似的锅炉板代码。是否有一个Zend框架类,已经有这个最小的锅炉板代码,我可以扩展呢?
如果不是,为什么没有一个?对代码保持干爽和一致性会有帮助吗?
答
我不是ZF的贡献者,但我相信答案很简单,随着时间的推移,随着组件被添加到框架中,这已经演变成为一个惯例。 ZF2(目前处于测试阶段)确实通过其他组件可以扩展的标准选项类来解决此问题 - 请参阅https://github.com/zendframework/zf2/blob/4f3c989efd04f07c78415192b0dee3c867e02199/library/Zend/Stdlib/Options.php
在短期内,如果您发现自己需要类似的东西,为什么不创建类似此类的类,延伸。
好点,只是认为我会提到flammon,我通常有一个模型的基类,并且映射器是我的应用程序中的所有模型/映射器的扩展。它们包含许多这些实用功能以及您可能经常需要的其他代码。 – drew010 2011-12-22 04:19:03
我开发了我自己的基类,但希望得到一个与ZF1一起出现的基础类,但找不到它。现在我更加急于想要与ZF2合作。谢谢。 – 2011-12-23 13:47:02