由于想弄一个商城,因此研究了一下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的更多相关文章

  1. SDWebImage源码解读之SDWebImageDownloaderOperation

    第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...

  2. SDWebImage源码解读 之 NSData+ImageContentType

    第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说 ...

  3. SDWebImage源码解读 之 UIImage+GIF

    第二篇 前言 本篇是和GIF相关的一个UIImage的分类.主要提供了三个方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name ----- 根据名 ...

  4. SDWebImage源码解读 之 SDWebImageCompat

    第三篇 前言 本篇主要解读SDWebImage的配置文件.正如compat的定义,该配置文件主要是兼容Apple的其他设备.也许我们真实的开发平台只有一个,但考虑各个平台的兼容性,对于框架有着很重要的 ...

  5. SDWebImage源码解读_之SDWebImageDecoder

    第四篇 前言 首先,我们要弄明白一个问题? 为什么要对UIImage进行解码呢?难道不能直接使用吗? 其实不解码也是可以使用的,假如说我们通过imageNamed:来加载image,系统默认会在主线程 ...

  6. SDWebImage源码解读之SDWebImageCache(上)

    第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计.在架构上来说,缓存算是存储设计的一部分.我们把各种不同的存储内容按照功能进行切割后,图片缓 ...

  7. SDWebImage源码解读之SDWebImageCache(下)

    第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极 ...

  8. AFNetworking 3.0 源码解读 总结(干货)(下)

    承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...

  9. AFNetworking 3.0 源码解读 总结(干货)(上)

    养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...

随机推荐

  1. SAP一句话入门 .

    SD是Sales and Distribution的简称.在SAP系统中,销售与分销模块处在供应链下游,关注从客户订单到向客户收款的全过程. SD模块中的Sales好理解,而Distribution却 ...

  2. Hyper-V虚拟化--逻辑网络、VM网络、逻辑交换机

    逻辑网络承接物理网卡和VM网卡 可以关联站点.主机组.VLAN.IP子网,配置静态IP地址池(虚机的PA地址从该静态IP地址池获取) 只有当逻辑网络中的网络站点关联了VLAN后,在VM中才可以选择VL ...

  3. ios7自带的晃动效果

    ios7自带的晃动效果 by 伍雪颖 - (void)registerEffectForView:(UIView *)aView depth:(CGFloat)depth; { UIInterpola ...

  4. android88 录音机

    package com.itheima.recorder; import android.os.Bundle; import android.app.Activity; import android. ...

  5. IOPS=(Queue Depth)/(IO latency)

    IO 延迟:存储设备的IO延迟 Queue Depth:磁盘控制器所发出的批量指令的最大条数 IOPS:磁盘设备每秒的IO 三者之间的关系:IOPS=(Queue Depth)/(IO latency ...

  6. 神奇的 BlocksKit(1):源码分析(下)

    私有类 _BKObserver _BKObserver 是用来观测属性的对象,它在接口中定义了 4 个属性: @property (nonatomic,readonly,unsafe_unretain ...

  7. java pdu短信解码

    java pdu短信解码 长短信未验证 有兴趣的可以试试 根据python的方法改写的 /** * PDU短信解析 * * * @param pduPayload * @return */ publi ...

  8. [置顶] linux第二天,g++,gcc,ps,cat,sort,grep,kill,less,ls -l ,

    33.less sample.txt 分页输出文件内容到屏幕 34./search content (搜索内容) 可以将文档中有searchcontent 的行输出到屏幕 35.grep scienc ...

  9. 在iframe中获取父页面的元素

    a.html <!DOCTYPE html> <html> <head> <title></title> </head> < ...

  10. ASP.NET MVC之PagedList使用

    ASP.NET MVC之PagedList使用 ---由于最近项目中用到了分页这里也来记录一下,一方面给自己一个记录,另一方面给后来者一些帮助! 一.首先大家先来看一下效果