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] )此函数返回由字符 ...
随机推荐
- Android之自定义AlertDialog无法监听控件
参考:http://www.cnblogs.com/511mr/archive/2011/10/21/2220253.html 要做一个自定义的弹出框,以前都是用一个Activity来实现,总觉得不是 ...
- IIS 允许无后缀文件访问的配置
最近一个项目 前端开发用了一大堆无后缀的html模板,问题就是发布到IIS以后访问 模板文件报404错误.无法下载. 百度 谷歌 搜一堆 都是MIME里添加 '.*' 实际上无效 正解是: MIME里 ...
- Android自定义View,高仿QQ音乐歌词滚动控件!
最近在以QQ音乐为样板做一个手机音乐播放器,源码下篇博文放出.今天我想聊的是这个QQ音乐播放器中歌词显示控件的问题,和小伙伴们一起来探讨怎么实现这个歌词滚动的效果.OK,废话不多说,先来看看效果图: ...
- 创建FILE GEODATABASE 和栅格目录及向栅格目录中添加影像
using System;using System.IO;using ESRI.ArcGIS.DataSourcesGDB;using ESRI.ArcGIS.DataSourcesRaster;us ...
- Java 8 Stream API Example Tutorial
Stream API Overview Before we look into Java 8 Stream API Examples, let’s see why it was required. S ...
- 改变linux shell前景色和背景色
作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)版权声明:本文的版权归作者与博客园共同所有.转载时请在明显地方注明本文的详细链接,未经作者同意请不要删 ...
- delphi xe5 android tts(Text To Speech)
TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转语音的方法 和访问蓝牙一样,这里用javaclass的接口实现 接 ...
- 从医生看病和快餐店点餐理解Node.js的事件驱动
第一个例子是关于医生看病. 在美国去看医生,需要填写大量表格,比如保险.个人信息之类,传统的基于线程的系统(thread-based system),接待员叫到你,你需要在前台填写完成这些表格,你站着 ...
- (转载)HashMap工作原理
HashMap是近些年来java面试中常问到的知识点,很多人(包括我在内)都知道HashMap的用法,也知道HashMap与HashTable之间的区别,但是却不知其所以然,于是乎,本人开始查阅相关资 ...
- Redis - 发布/订阅模式
Redis 提供了一组命令可以让开发者实现 “发布/订阅” 模式.“发布/订阅” 可以实现进程间的消息传递,其原理是这样的: “发布/订阅” 模式中包含两种角色,分别是发布者和订阅者.订阅者可以订阅一 ...