Comment un modèle objet client sait sur la méthode loadByEmail de la ressource modèle?
-
16-10-2019 - |
Question
Considérez le code suivant
$customer_email = "customer@example.com";
$customer = Mage::getModel("customer/customer");
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($customer_email);
Lorsque l'on regarde à travers Mage_Customer_Model_Customer je ne pouvais pas trouver une méthode de loadByEmail partout en elle de chaîne d'héritage. Puis je l'ai regardé du modèle de ressources, Mage_Customer_Model_Resource_Customer, et elle était là.
Ma question est: comment est-il possible que je charge le modèle lui-même et avoir accès à cette méthode par la $ customer_email variable
La solution
Je pense que vous avez manqué quelque chose. La méthode loadByEmail
existe dans la classe Mage_Customer_Model_Customer
:
Pour Magento 1.7.0.2 il commence à la ligne 180 et ressemble à ceci:
public function loadByEmail($customerEmail)
{
$this->_getResource()->loadByEmail($this, $customerEmail);
return $this;
}
Il est juste une enveloppe pour Mage_Customer_Model_Resource_Customer::loadByEmail
mais il existe.
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange