zoukankan      html  css  js  c++  java
  • tp_shop解读1

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

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

    clipboard

    关于错误的原因

    在此文件中: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]; 
        {
            "开始"->"检测是否安装"->"退出";
            "检测是否安装"->"定义应用目录
    ./Application"->"引入ThinkPHP
    入口文件";
            "引入ThinkPHP
    入口文件"->"THINK_VERSION=
    3.2.3"->"require 
    Think.Class.php";
            "THINK_VERSION=
    3.2.3"->"Think::start()"->"加载应用模式
    配置文件config.php";
            "加载应用模式
    配置文件config.php"->"App::run()"->"App::init()";
        }
    }

    image

  • 相关阅读:
    关于feign调用请求头丢失分析
    并发下编写SQL的注意事项
    Sentinel降级规则整理
    Mybatis-Plus使用整理
    Docker各种零散命令整理
    set集合怎么保证不重复的
    idea启动项目ava heap space
    网络穿透工具--钉钉HTTP穿透
    Log4j基本使用
    ide中普通java程序打包
  • 原文地址:https://www.cnblogs.com/luhouxiang/p/6185358.html
Copyright © 2011-2022 走看看