Мы строим систему онлайн-платежей с использованием Zend Framework и стараемся создать ее, чтобы было проще добавлять новые платежные системы.В настоящее время у нас есть реализация PayPal, но, возможно, мы захотим добавить и других провайдеров позже.
У нас есть объект Payment, расширяющий Zend_Db_Table_Row_Abstract, и объект Payments, расширяющий Zend_Db_Table_Abstract.Теперь в строке «Платеж» есть данные, специфичные для PayPal, которые мы хотим переместить в другую таблицу, специфичную для PayPal.Это позволяет нам иметь общие данные для платежей в таблице платежей и специфические данные поставщика платежей в другом.
Теперь мы попытались создать класс PayPalPayment, расширяющий Payment, и класс PayPalPayments, расширяющий Zend_Db_Table_Abstract.PayPalPayments ссылается на нашу новую таблицу базы данных и новый объект PayPalPayment.Что мы хотим сделать сейчас:
$ppp = new PayPalPayments();
$p = $ppp->createRow();
//set a paypal specific property. setToken is defined in PayPalPayment
$p->setToken('lol');
//set a Payment general property. setStatus is defined in Payment
$p->setStatus('paid');
//write to database
$p->save();
Однако мы не можем заставить это работать, так как createRow вернет только строку со столбцами в таблице PayPalPayment.Таким образом, это может привести к ошибке:
Specified column "pay_status" is not in the row
Некоторые сведения об отношениях можно найти в документации по Zend Framework, но на самом деле мы не хотим этого делать.Кто-нибудь пробовал это раньше?
С уважением, Ларс