Вам не нужно определять свой собственный Table_Row.Однако во многих случаях это может быть полезно, особенно если вы хотите определить некоторые конкретные методы или свойства для данной пользовательской строки.Они также могут улучшить читабельность вашего кода.
Например, в случае таблицы пользователей, вы можете определить метод getFullName () в пользовательской строке пользователя как:
public function getFullName() {
return $this->firstName . ' ' . $this->lastName;
}
Затем, когда вы получаете объект строки пользователя, чтобы получить полное имя пользователя, вы просто делаете:
$user = $uTable->find($newUid)->current();
$fullName = $user->getFullName();
Второй пример - это когда у вас есть родительская таблица длятаблица Users, такая как Адреса.В этом случае вы можете определить метод getAddress в строке пользователя:
public function getAddress() {
return $this->findParentRow('Application_Model_DbTable_Addresses');
}
В этом сценарии вы получите объект строки Address для текущего пользователя следующим образом:
$user = $uTable->find($newUid)->current();
$addressRow = $user->getAddress();
Другой пример , может быть, когда вы хотите создать пользовательские методы удаления или вставки.Предположим, вы хотите убедиться, что не хотите удалять пользователя-администратора с помощью метода delete ().Затем вы можете перегрузить метод удаления из Zend_Db_Table_Row следующим образом:
public function delete() {
if ('admin' === $this->userRole) {
return 0;
}
return parent::delete();
}
Таким образом, вы не сможете удалить администратора с помощью простого вызова delete () для объекта строки пользователя:
$user = $uTable->find($newUid)->current();
$rowsDeleted = $user->delete(); // would be 0 if $user is admin
Это всего лишь три основных примера, показывающих полезность определения ваших собственных классов строк.Но, конечно, они не нужны.Однако из моего собственного опыта они довольно удобны.