Ben oluşturmak gerekiyor her etki alanı nesnesi için geçerli temel yapıya sahiptir:
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;
}
}
Ben başlangıçta sadece "bağlayıcı geç statik" php dünyada ne anlama geldiğini nihayet öğrenmek için ana LP_Model sınıfa statik yöntemler refactor çalıştı.
Herkes bu kod refactor nasıl bir öneriniz varsa ben oluşturmak her etki alanı nesnesi aynı üç fonksiyonu redeclare zorunda değilsiniz ki ben sadece merak ediyorum?