4
我对每个域对象的当前基本结构,我需要创建:重构要删除静态方法代码味道
class Model_Company extends LP_Model
{
protected static $_gatewayName = 'Model_Table_Company';
protected static $_gateway;
protected static $_class;
public static function init()
{
if(self::$_gateway == null)
{
self::$_gateway = new self::$_gatewayName();
self::$_class = get_class();
}
}
public static function get()
{
self::init();
$param = func_get_arg(0);
if($param instanceof Zend_Db_Table_Row_Abstract)
{
$row = $param;
}
elseif(is_numeric($param))
{
$row = self::$_gateway->find($param)->current();
}
return new self::$_class($row);
}
public static function getCollection()
{
self::init();
$param = func_get_arg(0);
if($param instanceof Zend_Db_Table_Rowset_Abstract)
{
$rowset = $param;
}
elseif(!$param)
{
$rowset = self::$_gateway->fetchAll();
}
$array = array();
foreach ($rowset as $row)
{
$array[] = new self::$_class($row);
}
return $array;
}
}
我最初试图重构静态方法到父LP_Model类只学习终于什么是“后期静态绑定”意味着在PHP世界。
我只是想知道如果任何人有如何重构这个代码,这样我就不必重新声明中,我创建的每个域对象相同的三个功能建议?
再次感谢比尔。我知道你在前面的回答中提到了后期的静态绑定,但是直到我开始重构代码,才意识到这种限制的含义。看看你的第一个解决方案,它看起来很直观。 – 2008-12-24 23:19:44