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] )此函数返回由字符 ...
随机推荐
- python(6)-执行shell命令
可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen* --废弃 popen2.* --废弃 commands.* ...
- SqlServer之游标深入
原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/introduce-for-sqlserver-curs ...
- 【约瑟夫环变形】UVa 1394 - And Then There Was One
首先看到这题脑子里立刻跳出链表..后来继续看如家的分析说,链表法时间复杂度为O(n*k),肯定会TLE,自己才意识到果然自个儿又头脑简单了 T^T. 看如家的分析没怎么看懂,后来发现这篇自己理解起来更 ...
- ConcurrentHashMap和Hashtable区别
Hashtable:synchronized是针对整张Hash表的,即每次锁住整张表让线程独占安全的背后是巨大的浪费 ConcurrentHashMap和Hashtable主要区别就是围绕着锁的粒度以 ...
- oracle 取随机数据
--取随机数据 select dbms_random.value from dual; ); --百分比
- HTML5 图片上传预览
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...
- Unity3D鼠标点击物体产生事件
如果需要处理鼠标点击物体的情况, 可以当数据接触物体时,鼠标手势改变,然后点击后和NPC产生对话等: using UnityEngine; using System.Collections; publ ...
- IntelliJ IDEA 13.x 下使用Hibernate + Spring MVC + JBoss 7.1.1
从2004年开始做.NET到现在.直到最近要做一些JAVA的项目,如果说100个人写一篇关于.NET的文章,估计这10个人写的内容都是一样.但是如果说10个人写Java的文章,那真的是10个人10种写 ...
- CSS之拖拽库2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...
- Agile.Net 组件式开发平台 - 数据报表组件
Agile.Report.dll 文件为平台数据报表支持库,基于FasstReport.Net扩展重写,提供了非常强大的自定义报表的功能使开发者为应用程序快速有效地生成报表.报表类库提供了创建报表所需 ...