tp_shop解读1
由于想弄一个商城,因此研究了一下tp_shop,这个据说能完成几乎所有的功能。
考虑到原有的例子过于复杂,因此把所有相关的数据都删除了,结果上来就出错了,查了两天,大致弄清楚了状况。

关于错误的原因
在此文件中: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的更多相关文章
- SDWebImage源码解读之SDWebImageDownloaderOperation
第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...
- SDWebImage源码解读 之 NSData+ImageContentType
第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说 ...
- SDWebImage源码解读 之 UIImage+GIF
第二篇 前言 本篇是和GIF相关的一个UIImage的分类.主要提供了三个方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name ----- 根据名 ...
- SDWebImage源码解读 之 SDWebImageCompat
第三篇 前言 本篇主要解读SDWebImage的配置文件.正如compat的定义,该配置文件主要是兼容Apple的其他设备.也许我们真实的开发平台只有一个,但考虑各个平台的兼容性,对于框架有着很重要的 ...
- SDWebImage源码解读_之SDWebImageDecoder
第四篇 前言 首先,我们要弄明白一个问题? 为什么要对UIImage进行解码呢?难道不能直接使用吗? 其实不解码也是可以使用的,假如说我们通过imageNamed:来加载image,系统默认会在主线程 ...
- SDWebImage源码解读之SDWebImageCache(上)
第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计.在架构上来说,缓存算是存储设计的一部分.我们把各种不同的存储内容按照功能进行切割后,图片缓 ...
- SDWebImage源码解读之SDWebImageCache(下)
第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极 ...
- AFNetworking 3.0 源码解读 总结(干货)(下)
承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...
- AFNetworking 3.0 源码解读 总结(干货)(上)
养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...
随机推荐
- POSIX-Centos查看rpm包安装位置及相关信息
rpm -qifl `which svnserve`; http://www.ctohome.com/FuWuQi/56/122.html [国外服务器及ip租用价格] Centos6 kvm网桥配置 ...
- 神奇的问题记录【SqlDataAdapter Fill DataSet】
今天发现程序中有一张报表查询速度很慢[全条件要二分钟左右],查找相关原因,准备进行优化处理.注:报表调用存储过程,存储过程返回两个table就有以下神奇的故事: 直接将SQL语句在SSMS中执行发现全 ...
- PC-IIS因为端口问题报错的解决方法
1.我的电脑-管理-服务和应用程序-Internet信息服务 情况:这时发现“默认 SMTP 虚拟服务器”停止 解决方法:右击启动 情况:发现网页还是打不开.2.Internet信息服务-网站- ...
- jQuery无缝间歇向上滚动
http://www.jiangweishan.com/article/jQuery-scroll-up.html
- 转HTMLTestRunner 生成测试报告
1.HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展.它生成易于使用的 HTML 测试报告 1>下载HTMLTestRunner.py文件,地址为: h ...
- Android源码分析-消息队列和Looper
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17361775 前言 上周对Android中的事件派发机制进行了分析,这次博主 ...
- Python学习(2)
python基础学习(二)2.1 python定义函数用def,没有返回类型?def myabs(x) if x>0: return x python定义的函数可以多个直接一起返回,这一点和ja ...
- 拍照返回的bitmap太小
private void doPhoto(int requestCode) { if(!Environment.getExternalStorageState().equals(Environment ...
- 自定义QT事件
qtuserclass 1.事件ID 本质上就是一个整型值.0-999作为系统保留字段,自定义事件从QEvent::User(也就是1000)开始, 例如: #define MY_EVENT QEve ...
- 关于Intent的七大属性
原谅我愚昧,Intent七大属性这个概念我也是昨天才接触到,看了一下,都是一些常用的东西,就是没有总结过,那么今天就来简单总结一下. Intent七大属性是指Intent的ComponentName. ...