tp_shop解读1

时间:2022-12-08 19:39:26

由于想弄一个商城,因此研究了一下tp_shop,这个据说能完成几乎所有的功能。

考虑到原有的例子过于复杂,因此把所有相关的数据都删除了,结果上来就出错了,查了两天,大致弄清楚了状况。

tp_shop解读1

关于错误的原因

在此文件中:Application/Home/Controller/ChannelController.class.php

运行完

SELECT `id`,`parent_cat_id`,`logo`,`is_hot` FROM `kj_brand` WHERE (
parent_cat_id>0 )

后,

然后运行至:

select goods_id,cat_id,goods_name,shop_price,market_price from kj_goods where
is_on_sale=1 and cat_id in ()

出错,原因是

$sub_id_str=()

然后

$sql = "select goods_id,cat_id,goods_name,shop_price,market_price from
__PREFIX__goods where is_on_sale=1 and cat_id in $sub_id_str ";

这句调用就出错了

另外,提一下日志体系,此日志使用thinkphp的日志体系,可参考:

http://document.thinkphp.cn/manual_3_2.html#log

由于系统封装了日志库,在functions.php中,函数为trace(),因此可在程序的任意地方打印日志,如在

Application/Home/Controller/IndexController.class.php的index()中调用如下代码:

trace('[ '.index.' ] --START--进入首页','','INFO');
则系统进入首页后会在日志文件中产生如下日志:
INFO: [ index ] --START--进入首页
 

关于系统加载:

先说配置:原先看到系统中到处都是config.php配置,好晕,看了一圈弄明白了,系统先是加载think下面的php,然后加载common下的,然后是模块下的,然后是模块对应的什么下的,总之,后面的配置覆盖前面的配置,最终合并到

$_config全局数组中。在App::run()之前的配置文件的加载,都是应用级别的,即最多到Application中的应用配置,之后的才会深入到Home或是其它目录中的应用配置
 
一个dot程序:描述首页的启动顺序:
digraph directed {
node [fontname=NSimSun];
{
"开始"->"检测是否安装"->"退出";
"检测是否安装"->"定义应用目录\n./Application"->"引入ThinkPHP\n入口文件";
"引入ThinkPHP\n入口文件"->"THINK_VERSION=\n3.2.3"->"require \nThink.Class.php";
"THINK_VERSION=\n3.2.3"->"Think::start()"->"加载应用模式\n配置文件config.php";
"加载应用模式\n配置文件config.php"->"App::run()"->"App::init()";
}
}

tp_shop解读1