Magento is structured from many small modules working and existing as atomicly as possible. The typical Magento architecture for each module is divided on Blocks, Models, Helpers.
Tips: If you want to see more about most Magento interesting configuration one good class for that is core/code/Mage/Core/Model/Config.php
Now the interesting part have you thought why there are Mage::getModel(”) and Mage::getResourceModel(”) but Mage::helper?
Well, I still have not answer to that question. XD
But I have thought a lot of why you are able to get Mage::helper(‘unique_name’) but you able only to that -> Mage::getModel(‘unique_name/filename’) for the models.
Well, the answer is easy and it is in core/code/Mage/Core/Model/Config.php
public function getModelClassName($modelClass) {
$modelClass = trim($modelClass);
if (strpos($modelClass, '/') === false) {
return $modelClass;
}
return $this->getGroupedClassName('model', $modelClass);
}
public function getHelperClassName($helperName) {
if (strpos($helperName, '/') === false) {
$helperName .= '/data';
}
return $this->getGroupedClassName('helper', $helperName);
}
In the helper one Magento configuration adds automatically /data if there is no slash in the $helperName so if you write something from this kind Mage::helper(‘unique_name’) it is presenting Data.php file in your Helper folder that this unique_name is defining it will be loaded automatically.