Number [god I don’t know] in the “Reasons Magento/PHP drives you Crazy” series.
Trying loading a product object that doesn’t exist.
$product = Mage::getModel('catalog/product')->loadByAttribute('sku','NO SUCH SKU'); var_dump($product);
NULL. Now try loading an attribute object that doesn’t exist.
$attribute = Mage::getModel('catalog/resource_eav_attribute') ->loadByCode('catalog_product','NO SUCH ATTRIBUTE'); var_dump($attribute);
You’ll find that
$attribute contains an unpopulated attribute object.
If you’re a
C# programmer, this drives you crazy because the
loadByAttribute method should always return a product object (because methods have typed return values in those languages/system).
If you’re a PHP/Ruby/Python person you might expect to get
NULL back from a method like this, but you’d expect Magento to behave consistently across object types. It doesn’t matter what the system does (returns
NULL or returns an unpopulated object), it matters that the system behaves consistently when doing the same thing. (The same thing meaning instantiating an object)