`
coolsooner
  • 浏览: 1311211 次
文章分类
社区版块
存档分类
最新评论

2011-1-4----mage_core_model_layout--construct方法--个人分析

 
阅读更多

/**

* 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文件。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics