ecmall语言文件的加载使用流程
来源:互联网 发布:中文房间 知乎 编辑:程序博客网 时间:2024/05/21 15:46
1,ECMall startup函数启动,定义APP常量
$app = isset($_REQUEST['app']) ? preg_replace('/(\W+)/','', $_REQUEST['app']) : $default_app;
define('APP', $app);
2,frontend.base.php或者backend.base.php构造函数加载语言文件
Lang::load(lang_file('common'));
Lang::load(lang_file(APP));
3,Lang类的加载定义实现
function load($lang_file)
{
static $loaded = array();
$old_lang = $new_lang = array();
$file_md5 = md5($lang_file);
if (!isset($loaded[$file_md5]))
{
$new_lang = Lang::fetch($lang_file);
$loaded[$file_md5] = $lang_file;
}
else
{
return;
}
$old_lang =& $GLOBALS['__ECLANG__'];
if (is_array($old_lang))
{
$new_lang = array_merge($old_lang, $new_lang);
}
$GLOBALS['__ECLANG__'] = $new_lang;
}
加载文件内容数组
function fetch($lang_file)
{
return is_file($lang_file) ? include($lang_file) : array();
}
构建语言文件名称
function lang_file($file)
{
return ROOT_PATH . '/languages/'. LANG . '/' . $file . '.lang.php';
}
file变量即为请求的app名称,在ecmall启动函数中被设置
4,获取加载好的语言数据
app在display数据时使用基类ecapp.base.php的display
里面调用
/* 语言项 */
$this->assign('lang', Lang::get());
设置语言数据
Lang::get 获取预研key值
function &get($key = '')
{
if (Lang::_valid_key($key) == false)
{
return $key;
}
$vkey = $key ? strtokey("{$key}",'$GLOBALS[\'__ECLANG__\']') : '$GLOBALS[\'__ECLANG__\']';
$tmp = eval('if(isset('. $vkey . '))return ' . $vkey . ';else{ return $key; }');
return $tmp;
}
ecapp.base.php使用基类的app.base.php的assign函数给视图传递变量。
function assign($k, $v = null)
{
$this->_init_view();
if (is_array($k))
{
$args = func_get_args();
foreach ($args as $arg) //遍历参数
{
foreach ($arg as $key => $value) //遍历数据并传给视图
{
$this->_view->assign($key, $value);
}
}
}
else
{
$this->_view->assign($k, $v);
}
}
app.base.php的assign调用_view既是template.php的assign函数为视图添加变量。
function assign($tpl_var, $value = '')
{
if (is_array($tpl_var))
{
foreach ($tpl_var AS $key => $val)
{
if ($key != '')
{
$this->_var[$key] = $val;
}
}
}
else
{
if ($tpl_var != '')
{
$this->_var[$tpl_var] = $value;
}
}
}
5,在视图类中设置模板后,既可以使用了。
ecapp.base.php 的display函数
parent::display($f);
调用父类app.base.php的display函数
既
function display($n)
{
$this->_init_view();
$this->_view->display($n);
}
既调用了template.php的display函数。
- ecmall语言文件的加载使用流程
- ecmall后台判断登录的流程
- ECMall 退款流程2
- Ecmall购物流程解析
- Linux-execve时的文件加载流程
- ecmall 文件说明
- ecmall 文件说明
- ecmall 入口文件分析
- ECMall退款流程开发1
- Apache文件加载流程
- Ebean使用maven配置的加载流程
- ECMall安装使用帮助
- xlib文件的加载使用
- jpdl 流程定义语言的使用
- ecmall 的二次开发
- Swift语言环境下使用init 加载自己的 xib文件
- ecmall首页文件存放关系
- ECMall 2.0 模板文件列表
- chromium之content_shell源代码分析(二)
- C语言中的指针加减偏移量
- uva 10129 - Play on Words
- java打印对象地址防止递归
- oracle各种账号解锁方法
- ecmall语言文件的加载使用流程
- windows xp下如何添加开机自启动的程序
- C#两种获取灰度图像的方法
- android WebView缩放设置setInitialScale(...)后,修改设置的值,问题解决
- 常用部分汇编代码与机器码
- 百度搜索使用技巧
- js去除数组中的重复元素的好方法
- TortoiseSVN使用简介
- 项目1-有序的结构体数组