shopnc 商城源码阅读笔记--开篇概述
关于shopnc
以下是摘抄自百度百科的关于shopnc的介绍:
ShopNC商城系统,是天津市网城天创科技有限责任公司开发的一套多店模式的商城系统。 本系统具有商城系统非常完整和专业的功能与流程,系统包括了订单管理、商品管理、购物车功能、网上支付功能、信息管理、客户管理、会员体系设置、优惠促销、广告管理、第三方帐号登录等功能模块,可以实现快速搭建各种类型的个性化电商运营服务平台。
事实上shopnc有很多套不同类型的系统,我这次主要阅读的是最复杂最典型的B2B2C类京东的这套,主要的阅读方向
1.看商城在主业务上的实现流程
2.储存技术
3.缓存技术
4.前端技术
5.站内搜索技术
6.模板引擎标签语法
不过,我是第一次接触shopnc,所以我要缕一缕代码的执行流程,顺便标识一下目录结构.
访问index.php会自动判断是否要安装,安装主要执行3个步骤: 安装数据库文件->在根目录生成config.ini.php的配置文件->往admin表中插入创始人管理员帐号密码
所以可以直接将/install/images/config.ini.php下的配置文件复制到根目录,再手动修改其中的配置项即可
而从安装文件源码可以看到,管理员密码是没有加盐或其他二次加密处理的,这个比较危险,尤其管理员还是使用MD5加密,现在MD5岌岌可危,已经不安全了。 所以使用shopnc第一件事应该是把这里的md5加密改掉,删除install目录,将/global.php中判断安装的代码注释掉


出门便遇拦路虎,shopnc马上遇到一个很奇怪的错误,php版本5.4n,mysql版本5.5
Fatal error: Call-time pass-by-reference has been removed in D:\WWW\shopnc\framework\db\mysqli.php on line 267

查看代码,看来是引用传值导致的锅,php官方有详细的文档说明:http://php.net/manual/zh/language.references.pass.php
注意在函数调用时没有引用符号!只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。
在最近版本的 PHP 中如果把 & 用在foo(&$a); 中会得到一条警告说“Call-time pass-by-reference”已经过时了,但是不知道为什么在这里会变成语法格式错误。这个后面我会专门写一篇文章来解释他。
传送门: PHP引用传值规范问题
现在把$fields前面的 & 符号去掉,程序就正常运行了.

文件执行流程:

文件目录结构:

本文到此结束,下篇文章我会继续读一读shopnc在处理主业务上的实现,包括会员,商品,订单等。
shopnc 商城源码阅读笔记--开篇概述的更多相关文章
- shopnc 商城源码阅读笔记-缓存技术
缓存方式 : 从 shopnc 的缓存驱动目录 /framework/cache里已有的实现类来看,shopnc支持以下5种缓存方式 apc Eaccelerator file memcache xc ...
- HashMap源码阅读笔记
HashMap源码阅读笔记 本文在此博客的内容上进行了部分修改,旨在加深笔者对HashMap的理解,暂不讨论红黑树相关逻辑 概述 HashMap作为经常使用到的类,大多时候都是只知道大概原理,比如 ...
- CI框架源码阅读笔记5 基准测试 BenchMark.php
上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...
- CI框架源码阅读笔记4 引导文件CodeIgniter.php
到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...
- CI框架源码阅读笔记3 全局函数Common.php
从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...
- CI框架源码阅读笔记2 一切的入口 index.php
上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...
- 源码阅读笔记 - 1 MSVC2015中的std::sort
大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格 ...
- Three.js源码阅读笔记-5
Core::Ray 该类用来表示空间中的“射线”,主要用来进行碰撞检测. THREE.Ray = function ( origin, direction ) { this.origin = ( or ...
- PHP源码阅读笔记一(explode和implode函数分析)
PHP源码阅读笔记一一.explode和implode函数array explode ( string separator, string string [, int limit] )此函数返回由字符 ...
随机推荐
- 使用Java编写并运行Spark应用程序
我们首先提出这样一个简单的需求: 现在要分析某网站的访问日志信息,统计来自不同IP的用户访问的次数,从而通过Geo信息来获得来访用户所在国家地区分布状况.这里我拿我网站的日志记录行示例,如下所示: 1 ...
- Eclipse对printf()不能输出到控制台的解决方法
方案1: 在main 语句中加一条 setbuf(stdout,NULL); 这个即可. 在ecplise下使用cdt开发c程序,发现运行后终端没有输出,停止后会输出,通过在main中添加 setbu ...
- 怎么在html页面和js里判断是否是IE浏览器
HTML里: HTML代码中,在编写网页代码时,各种浏览器的兼容性是个必须考虑的问题,有些时候无法找到适合所有浏览器的写法,就只能写根据浏览器种类区别的代码,这时就要用到判断代码了.在HTML代码中, ...
- 关于Linux的总结(二)
主要内容 Linux 安装 常用命令 VI编辑器的使用 远程登录 主机名的设置 IP的设置 防火墙的设置 用户和组账户管理 文件权限管理 RPM软件包管理 软件的安装 Jdk,tomcat, ecli ...
- hdu 4251 划分树
思路:裸的划分树 #include<iostream> #include<algorithm> #include<cstdio> #include<cmath ...
- VS中的波浪线
绿色波浪线: 如果你的代码中出现了绿色的波浪线,说明你的代码语法并没有错误, 只不过提示你有可能会出现错误,但是不一定会出现错误.警告线 红色波浪线: 如果你的代码中出现了红色的波浪线,意味着你的代码 ...
- JavaScript之模拟评星打分
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312&qu ...
- jquery 解析xml字符串
// 函数功能:把xml字符串转换成对象 function convertXmlStringToObj(xmlString) { var xmlObj = new Object; var xmlDoc ...
- oracle储存过程,job,视图,触发器(记性不好,写个例子自己记)
存储过程 create or replace procedure TestPro(Descerr out varchar2 ) is begin select * from test; excepti ...
- 注意java的对象引用
要注意,当前拿到的“对象引用”, 是不是 指向 最新的实例, 没有的话, 要重新 生成实例去指向. 代码例子: AnsweringRuleInfo bhRule = accountGenerator. ...