2011-1-4----mage_core_model_layout--construct方法--个人分析
2011-01-04 01:07
429 查看
/**
* 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文件。
* 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文件。
相关文章推荐
- 2011-1-4-----核心模型---mage_core_model_cache---construct方法--个人分析
- 2010-1-3------mage_core_model_config------------construct过程----------------个人分析
- 2011-1-3----mage_core_model_config---------init()方法加载过程---个人分析
- mage_core_model_resource---------系统资源模型分析!!!!
- IBM HTTP Server Plugin默认plugin-key.kdb 密钥数据库文件默认个人证书密码过期分析与解决方法
- Magento: Fatal error: Cannot override final method Mage_Core_Model_Abstract::clearInstance()
- Java中的JavaCore/HeapDump文件及其分析方法
- 【JVM】Java中的JavaCore/HeapDump文件及其分析方法
- 【thinkphp3.x】ThinkPHP/Lib/Core/Model.class.php文件分析
- 关于LayoutInflater的inflate方法分析
- LayoutInflater.inflater()方法及参数源码分析
- Fatal error: Cannot override final method Mage_Core_Model_Abstract::clearInstance()
- Linux系统故障分析方法个人总结
- noip2011提高组初赛(答案+选择题题目+个人分析)
- Java中的JavaCore/HeapDump文件及其分析方法(很重要)
- Java中的JavaCore/HeapDump文件及其分析方法
- coredata 生成Model时2 duplicate symbols报错 解决方法
- JavaCore/HeapDump文件及其分析方法
- 继承---Mage_core_model_mysql4_abstract的类的数据库操作方法------------继承Mage_core_model_mysql4_collection_abstract的类的的数据库操作方法
- android UI——自定义view(layout)重写方法的分析