/**
* Class constructor
*
* @param array $data
*/
public function __construct($data=array())
{
$this->_elementClass = Mage::getConfig()->getModelClassName('core/layout_element');
$this->setXml(simplexml_load_string('<layout/>', $this->_elementClass));
$this->_update = Mage::getModel('core/layout_update');
parent::__construct($data);
}
1
$this->_elementClass = Mage::getConfig()->getModelClassName('core/layout_element');
/**
* Retrieve modele class name
*
* @param sting $modelClass
* @return string
*/
public function getModelClassName($modelClass)
{
$modelClass = trim($modelClass);
if (strpos($modelClass, '/')===false) {
return $modelClass;
}
return $this->getGroupedClassName('model', $modelClass);
}
1.1
//去掉空格
function trim ($str, $charlist = null) {}
1.2
//Find position of first occurrence of a string
function strpos ($haystack, $needle, $offset = null) {}
1.3
$this->getGroupedClassName('model', $modelClass);
/**
* Retrieve class name by class group
*
* @param string $groupType currently supported model, block, helper
* @param string $classId slash separated class identifier, ex. group/class
* @param string $groupRootNode optional config path for group config
* @return string
*/
public function getGroupedClassName($groupType, $classId, $groupRootNode=null)
{
if (empty($groupRootNode)) {
$groupRootNode = 'global/'.$groupType.'s';
}
$classArr = explode('/', trim($classId));
$group = $classArr[0];
$class = !empty($classArr[1]) ? $classArr[1] : null;
if (isset($this->_classNameCache[$groupRootNode][$group][$class])) {
return $this->_classNameCache[$groupRootNode][$group][$class];
}
//$config = $this->getNode($groupRootNode.'/'.$group);
$config = $this->_xml->global->{$groupType.'s'}->{$group};
if (isset($config->rewrite->$class)) {
$className = (string)$config->rewrite->$class;
} else {
if (!empty($config)) {
$className = $config->getClassName();
}
if (empty($className)) {
$className = 'mage_'.$group.'_'.$groupType;
}
if (!empty($class)) {
$className .= '_'.$class;
}
$className = uc_words($className);
}
$this->_classNameCache[$groupRootNode][$group][$class] = $className;
return $className;
}
2
//加载xml
parent::__construct($data);
//总体作用是加载xml文件。
本文介绍了Magento中布局构造的方法,包括构造函数的初始化过程、获取模型类名的方式及按组别检索类名的功能实现。通过解析核心代码,展示了如何加载XML布局文件,并详细解释了关键函数的作用。
176

被折叠的 条评论
为什么被折叠?



