Я работал с Magento больше года и достаточно хорошо изучил его. Теперь я хочу изучить Zend, и я застрял на моделях.
Я привык иметь сущности и коллекции сущностей в Magento, и, вероятно, я захочу использовать Zend_Db_Table
, Zend_Db_Table_Row
и / или Zend_Db_Table_Rowset
. Что меня смущает, так это роль каждого класса.
Я знаю, что могу расширить каждый класс, и понимаю, что в моем классе Product_Table
(который расширяет Zend_Db_Table_Abstract
) это возможно иметь частные методы, которые сообщают Zend, какие классы использовать для строк и наборов строк, однако мне это не нравится.
Наличие этого кода в Magento:
Пример 1
// I understand that maybe I'll use the `new` keyword instead
// Mage::getModel() is only for exemplification
$product = Mage::getModel('catalog/product');
$product->setName('product name');
$product->setPrice(20);
$product->save();
if($id = $product->getId()){
echo 'Product saved with id' . $id;
}
else{
echo 'Error saving product';
}
Пример 2
$collection = Mage::getModel('catalog/product')->getCollection();
// this is the limit, I'm ok with other method's name
$collection->setPageSize(10);
$collection->load()
foreach($collection as $product){
echo $product->getName() . ' costs ' . $product->getPrice() . PHP_EOL;
}
Как Могу ли я реализовать нечто подобное в Zend Framework? В качестве альтернативы, если это действительно плохая идея, как лучше всего реализовать модели в Zend Framework?
Спасибо