La idea era poder permitir hacer un join (que a veces es muy necesario), y a la vez poder tener tu objeto de forma natural.
Si bien es un cierto hack, es algo necesario cuando necesitas tener tu objeto, por ejemplo supongamos este caso:
Código PHP:
Ver originalclass MyUserTable extends Zend_Row_Table_Abstract
{
protected $_rowClass = 'MyUserRow';
public function getUsersByType(); // Aqui haces un join con otra tabla type
}
class MyUserRow extends Zend_Db_Table_Row_Abstract
{
public function getRegisteredDate(); // Aqui tienes logica para formatear la fecha desde la bdd
}
Si tu haces el select desde el adapter, te va a devolver un array, o un array de objetos (stdClass), y si requieres de tu objeto MyUserRow para realizar cierta lógica permitiendo el join, sin el "hack" no sería posible más que creando manualmente el objeto e inyectando los datos. Es mejor el "hack" y dejar que el FW lo haga por ti.
Repito es algo lo más base a lo que es un ORM que sería lo ideal.
Saludos.