PHP7中文手册2018 带注释 最新chm版
ecshop 架构设计 从头看起
先看看首页的模板载入流程:
从执行开始
require(dirname(__FILE__) . '/includes/init.php');
完成初始化部份
一,针对客户端的不同,加入了对手持浏览的优先分支处理
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
$uachar =
"/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile)/i";
if(($ua == ''
|| preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap'))
{
$Loaction = 'mobile/';
if (!empty($Loaction)) {
ecs_header("Location: $Loaction\n");
exit;
}
}
二,判断是否属于ajax请求
$act = !empty($_GET['act']) ? $_GET['act'] : '';
if ($act == 'cat_rec')
{
$rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
$rec_type = !empty($_REQUEST['rec_type']) ? intval($_REQUEST['rec_type']) : '1';
$cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
include_once('includes/cls_json.php');
$json = new JSON;
$result = array('error' => 0, 'content' => '', 'type' => $rec_type, 'cat_id' => $cat_id);
$children = get_children($cat_id);
$smarty->assign($rec_array[$rec_type] . '_goods',
get_category_recommend_goods($rec_array[$rec_type], $children));
// 推荐商品
$smarty->assign('cat_rec_sign', 1);
$result['content'] = $smarty->fetch('library/recommend_' . $rec_array[$rec_type] . '.lbi');
die($json->encode($result));
}
这里是针对最好,最热,最新推荐产品的ajax 请求处理
判断 GET中 act变量 的字符串 是否等于 cat_rec
三,载入主页模板页面内容, 这里应用于smarty 模板缓存机制
特点:
每个模板页面基本上对应一个入口页面
每个入口页面会从头开始完成初始化流程
Smarty 模板机制 从某种角度把视图与处理逻辑分开。
Ecshop 的模板机制在smarty 的机制处理思想上重新加入自己的处理成分
重点体现在这个文件:
Includes\cls_template.php
构造$smarty 对象,在includes\init.php
require(ROOT_PATH . 'includes/cls_template.php');
$smarty = new cls_template;
$smarty->cache_lifetime = $_CFG['cache_time'];
$smarty->template_dir = ROOT_PATH . 'themes/' . $_CFG['template'];
$smarty->cache_dir = ROOT_PATH . 'temp/caches';
$smarty->compile_dir = ROOT_PATH . 'temp/compiled';
关于$_SESSION 的初始化:
一, 如果是蜘蛛的访问,那么默认为访客方式,并且不记录到日志中
二, 用户信息的初始化与session 变量中的值是紧密相关的。
三, 关于用户的信息,先找session ,再找cookie
转载请注明:谷谷点程序 » ecshop 架构设计 从头看起