Я использую фреймворк Zend_Db и столкнулся с загадкой.Я пытаюсь добавить пользовательскую обработку к именованию столбцов на уровне строк, но по какой-то причине не удается вызвать мою функцию.
Я сократил проблему, чтобы просто попытаться выяснить, является ли основнойКласс "Row" вообще когда-либо создавался.Из того, что я могу сказать, это не так.
Вот что я получил:
// this class functions correctly; I get "table" written to my output
class DHR_Table extends Zend_Db_Table_Abstract
{
protected $_rowClass = 'DHR_Row';
function __construct(){
echo "table";
parent::__construct();
}
}
// this class never gets called, at least not that is evident from the constructor echo
class DHR_Row extends Zend_Db_Table_Row_Abstract
{
protected $inflector = null;
function __construct(){
echo "row";
parent::__construct();
}
}
// this is the actual implementation class that uses these two:
class Application_Model_DbTable_Applicants extends DHR_Table
{
protected $_name = 'applicants';
}
Мой вывод включает в себя некоторые данные (исключены из этого поста, но часть "Кандидаты""класс" и "таблица", но нет "строки".Есть идеи, почему это может происходить?Версия Zend Framework 1.11.11.
[Edit] Вот пример использования:
class ApplicantsController extends DHR_RestController
{
public function indexAction()
{
$applicants = new Application_Model_DbTable_Applicants();
$result = $applicants->fetchAll();
$this->success($result);
}
protected function success($data, $code = 200)
{
if(is_a($data, 'Zend_Db_Table_Rowset')){
// we could do some pagination work here
$data = $data->toArray();
}
$this->setResponseCode($code)->appendBody(Zend_Json::encode(array(
'success'=>true,
'data' => $data
)));
}
}
Я ожидаю, что по крайней мере какой-нибудь метод будет вызываться для класса строки при возврате сериализованных результатов...
[Update] Если я использую "fetchRow", все работает как положено;fetchAll просто не выполняет преобразование в базовый тип объекта.