Design « Gang of Four » Patterns dans Magento de base
-
16-10-2019 - |
Question
Il y a quelques modèles très évidents utilisés dans le noyau de Magento, tels que:
- Singleton
- Registre
- Événement / Observateur
- L'usine
- Modèle / Vue / contrôleur
Mais il y a d'autres qui peuvent être utilisés dans Magento que je ne suis pas au courant, comme acteur, décorateur, modèles Stratégie.
Y at-il une liste de référence de l'utilisation de tous les types de modèle dans Magento ou comment mettre en œuvre des modules tiers qui ne se répliquent pas inutilement une fonctionnalité intégrée de Magento?
La solution
Il y a une liste des modèles de conception qui sont utilisés dans Magento sur Stack Overflow
De l'article:
Les plus évidentes sont:
usine:
$product = Mage::getModel('catalog/product');
Singleton:
$category = Mage::getSingleton('catalog/session');
Registre:
$currentCategory = Mage::registry('current_category');
Voir Helper:
Mage::helper('core');
Prototype:
Mage:getModel('catalog/product')->getTypeInstance();
Objet Piscine:
$id = Mage::objects()->save($object); $object = Mage::objects($id);
Iterator:
Mage::getModel('catalog/product')->getCollection();
Événements / auditeurs:
Mage::dispatchEvent('model_load_before', $params);
EDIT
Active Record
$product->save() $product->getName()
objet Null
$collection->getFirstItem()
chargement Lazy - collections sont chargées lorsque itérée
Il y a aussi 5 articles sur rue Ryan blog sur MVC, front Controller, usine, Singleton et registre dans Magento
Modifier
Je pourrais ajouter que Magento « singleton » est plus un pseudo-singleton. Il est une combinaison de « usine » parce que Mage :: getSingleton () est une usine et « registre » car à l'intérieur de la méthode de getSingleton()
ce qu'on appelle
self::register($registryKey, self::getModel($modelClass, $arguments))