版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
S/1Q0晨
ShopNCB2B2C商城開發(fā)手冊
天津市網(wǎng)城天創(chuàng)科技有限責(zé)任公司
2023年6月
1/
55
S^flOP
1.簡介
ShopNCB2B2C商城是ShopNC于2023年最新推出的【B2B2C】電商平臺系統(tǒng),
采納PHP5+MySQL技術(shù)為基礎(chǔ),采納OOP(面對對象)方式進(jìn)行核心框架搭建,結(jié)合
MVC模式進(jìn)行開發(fā),可以支持Windows/Unix服務(wù)器環(huán)境,需PHP5.3與以上版本支
持,可運(yùn)行于包括Apache、IIS和Nginx在內(nèi)的多種WEB服務(wù)器。
2.架構(gòu)設(shè)計(jì)
2.1系統(tǒng)特性
ShopNC借鑒了國內(nèi)外優(yōu)秀的開源程序與開發(fā)模式,運(yùn)用面對對象的開發(fā)結(jié)構(gòu)、MVC
模式、單一入口、ORM影射等。封裝了CURD和一些常用操作,在安裝部署、數(shù)據(jù)查詢、
數(shù)據(jù)緩存、數(shù)據(jù)驗(yàn)證、模型處理、視圖與布局、路由處理、SEO支持、大數(shù)據(jù)支持等方面
表現(xiàn)穩(wěn)定。
?MVC設(shè)計(jì)
ShopNCB2B2C商城融合了MVC模式進(jìn)行開發(fā),系統(tǒng)開發(fā)高效,各個(gè)
節(jié)點(diǎn)結(jié)構(gòu)更加清楚。模型(M):模型的定義由Model類來完成。
限制器(C):由框架核心和Action
共同完成。視圖(V):由Tpl類和模
板文件組成。
MVC作為一種模式只是供應(yīng)了一種靈敏開發(fā)的手段,ShopNC系統(tǒng)融入MVC模式但
不拘泥于MVC本身。?緩存機(jī)制
B2B2C商城支持包括文件緩存、數(shù)據(jù)表緩存以與從種內(nèi)存緩存(Redis、APC、
Memcache、eAccelerator
和Xcache),用戶可跟據(jù)實(shí)際運(yùn)行環(huán)境自行設(shè)置。
?調(diào)試模式
系統(tǒng)供應(yīng)了調(diào)試模式,可用于開發(fā)過程的不同階段,包括開發(fā)、測試和演示等狀況,滿
意調(diào)試開發(fā)過程中的日志和分析須要,確定將來系統(tǒng)以最佳的方式進(jìn)行部署。
?查詢機(jī)制豐富系統(tǒng)內(nèi)建豐富的查詢機(jī)制,包括組合查詢、復(fù)合查詢、區(qū)間查詢、統(tǒng)
計(jì)查詢、定位查詢、多表查詢、子查詢和
原生查詢,運(yùn)用數(shù)據(jù)查詢簡
潔高效。?動(dòng)態(tài)模型
2/
55
Shop^f?
系統(tǒng)中無需創(chuàng)建對應(yīng)的模型類、即可輕松完成CURD操作,使數(shù)據(jù)
庫操作更加簡潔。?支持字段檢測
系統(tǒng)支持緩存字段信息,支持非法字段過濾和字段類型強(qiáng)制轉(zhuǎn)換,確保數(shù)
據(jù)操作的平安性。?高效的搜尋機(jī)制
系統(tǒng)引入第三方搜尋引擎,運(yùn)用內(nèi)存緩存、文件緩存、數(shù)據(jù)表緩存相結(jié)合,最大化削減
搜尋給系統(tǒng)帶來的影響。?易用性
LAMP架構(gòu)保證跨平臺、MVC模塊化開發(fā)保證易維護(hù)與擴(kuò)展、系統(tǒng)架構(gòu)保
證集群部署與擴(kuò)展。?高平安書目讀寫分別,框架層驗(yàn)證與過濾、多層級口
令愛護(hù)、完善的角色與權(quán)限限制。
?大數(shù)據(jù)
緩存集群、數(shù)據(jù)庫集群、存儲集群(或分布式)和WEB集
群支撐大數(shù)據(jù)。?高并發(fā)'高可用
數(shù)據(jù)緩存、動(dòng)靜分別、集群(或分布式)部署支撐高并發(fā),數(shù)據(jù)庫集群、存儲集群、宕機(jī)檢
測支撐高可用。
2.2執(zhí)行流程
系統(tǒng)采納單一入口模式,系統(tǒng)框架執(zhí)行流程如下:
ShopNC核心框架用戶訪問——?單一入口
a加裁基本信息
加載數(shù)據(jù)庫夔動(dòng)
加載緩存驅(qū)動(dòng)
加載模板驅(qū)動(dòng)
商城基類
加我其它
拋
出
異
常
3/
55
x^nop1'
2.3書目結(jié)構(gòu)
系統(tǒng)主要書目:
admin后臺管理書目
chatIM書目
circle圈子書目
cmsCMS書目
microshop微商城書目
shop商城書目
core框架書目
data公共資源書目
mobile手機(jī)客戶端API
商城
data>api第三方API書目
data>cache緩存文件書目
data>config配置文件書目
data>crontab定時(shí)觸發(fā)文件書目
data>log系統(tǒng)運(yùn)行日志書目
data>sessionSESSION文件存
放書目
data>upload上傳圖片書目
core>系統(tǒng)框
framework架
core>framework>緩存驅(qū)
cache動(dòng)
core>framework>核心文
core件
數(shù)據(jù)層驅(qū)
core>framework>db動(dòng)
core>framework>系統(tǒng)方
function法
core>framework>
libraries類庫
core>
language框架語言包書目
安裝書
shop>install目
shop>
language語言包書目
shop>control限制器書目
shop>模板書
templates目
4/
55
S^nop
2.4MVC設(shè)計(jì)
ShopNCB2B2C商城融入MVC模式進(jìn)行開發(fā),系統(tǒng)開發(fā)高效,各個(gè)
節(jié)點(diǎn)結(jié)構(gòu)更加清楚。模型(M):模型的定義由Model類來完成。
限制器(C):由框架核心和Action
共同完成。視圖(V):由Tpl類和
模板文件組成。
MVC作為一種模式只是供應(yīng)了一種靈敏開發(fā)的手段,ShopNC系統(tǒng)應(yīng)用MVC但不拘泥
于MVC本身。
2.5限制器
ShopNCB2B2C商城限制器類位于control書目,限制器調(diào)度由框架依據(jù)act和op
參數(shù)完成,假如act或op參數(shù)為空,系統(tǒng)會自動(dòng)賦值"index”。
限制器類文件名一般為業(yè)務(wù)名稱,類名稱一般為業(yè)務(wù)名稱+“Control”,如品牌限制
器類文件命名為control/brand.php,類名為brandControlo
://<siteurl>/index.php
將會執(zhí)行control/index.php中的
indexOpO方
法:〃vsiteurl>/index.php?act=br
and&op=list將會執(zhí)行
control/brand.php中的listOpO方法
2.6模型
ShopNCB2B2C商城Model的運(yùn)用敏捷,可以無需進(jìn)行任何模型定義,就可以完成對
相關(guān)數(shù)據(jù)表的CURD操作,這就是動(dòng)態(tài)模型處理,不須要重復(fù)進(jìn)行模型實(shí)例化即可實(shí)現(xiàn)對
不同表的操作。新模型的處理支持向下兼容。
運(yùn)用Model。方法創(chuàng)建模型,可以創(chuàng)建一個(gè)空模型實(shí)例,然后運(yùn)用該實(shí)例完成對
不同表的操作,如:$model=Model();
$model->table('member,)->find(5);//查詢主鍵ID為
5的會員信息$model->table「brard)->delete⑸;//
刪除主鍵為5的品牌也可以實(shí)例化一個(gè)非空模型實(shí)例,
如:
$model=Model('member');
系統(tǒng)首先會查找文件與內(nèi)部的memberModel類是否存在:
a)假如存在,將實(shí)例化中的memberModel類,假如需運(yùn)用框架已封裝的方法
(select、find、delete、insert等),須要在memberModel類中繼承Model類
并在構(gòu)造方法中觸發(fā)父類構(gòu)造方法,
5/
55
Shop
classmemberModelextends
Model{publicfunction
_construct(){
parent::_construct('member');
}
〃除運(yùn)用系統(tǒng)供應(yīng)方法以外,還可以自定義方法
//publicfunction
myfuc(){〃添加
業(yè)務(wù)邏輯
}
b)假如不存在,將實(shí)例化framework/core/model.php中的Model類,也就是只實(shí)
例化框架供應(yīng)的模型類
(動(dòng)態(tài)模型)
$model=Model('member');
$model->find(5);//查詢主鍵為5
的會員信息
$model->table('brand')->delete(5);//刪除主鍵為5的品牌,即使創(chuàng)建member模
型,還是可以運(yùn)用該模
型的table。方法來操作其它表
2.7數(shù)據(jù)庫抽象層
ShopNCB2B2c商城供應(yīng)了多個(gè)數(shù)據(jù)庫訪問驅(qū)動(dòng),支持mysql、mysqU,系統(tǒng)會跟據(jù)
當(dāng)前的數(shù)據(jù)庫配置,自動(dòng)調(diào)用相應(yīng)的數(shù)據(jù)層驅(qū)動(dòng),同時(shí)系統(tǒng)還支持?jǐn)?shù)據(jù)庫的集群配置,為
企業(yè)客戶保駕護(hù)航。
2.8視圖
視圖功能主要由Tpl類(core/framework/libraries/tpl.php)和模板文件組成(位
于templates書目下),Tpl
類完成限制器和模板文件的溝通,限制器通過Tpl類將數(shù)據(jù)輸送到模板,然后由模板輸出數(shù)
據(jù),ShopNCB2B2c商城未運(yùn)用特定的模板語言,而是運(yùn)用原生的PHP語法,省去了解
析模板語言的時(shí)間,加快響應(yīng)速度。
2.9函數(shù)和類庫
函數(shù)
系統(tǒng)函數(shù)均存放在framework/function書目中,考慮到以后的擴(kuò)展,系統(tǒng)跟據(jù)功能將
函數(shù)拆分進(jìn)入不同的文件中,
core.php存放系統(tǒng)的通用函數(shù)
goods.php存放處理商品、訂單、店鋪相關(guān)的信息
的函數(shù)rec_position.php舉薦位調(diào)用函數(shù)
6/
55
?一一一
seccode.php存放驗(yàn)證碼操作的函數(shù)
thumb.php圖片裁剪函數(shù)
adv.php廣告調(diào)用函數(shù)
類庫
系統(tǒng)類庫主要存放在framework下的libraries、cache、core和tpl書目中,
Hbrarites存放的主要是完成專項(xiàng)功能的類,cache下是存放多種緩存驅(qū)動(dòng)類,core下存
放的是核心基類和模型處理類。
libraries/email.php郵件發(fā)送類
libraries/cache,php緩存驅(qū)動(dòng)入口類
libraries/gdimage.php水印類
libraries/chat.phpIM處理類
libraries/language.php語言包處理類
libraries/log.php日志類
libraries/page.php分頁類
libraries/resizeimage.php圖片裁切類
libraries/seccode.php驗(yàn)證碼處理類
libraries/security.php字符過濾類
libraries/excel.phpEXCEL導(dǎo)出類
libraries/upload.php上傳類
libraries/csv.phpCSV導(dǎo)出類
libraries/tpl.php視圖類
libraries/model.php模型類
cache/cache.redis.phpredis緩存類
cache/cache.文件緩存類
cache/cache.apc.phpape緩存類
xcache緩存類
memcache緩存類
cache/cache,eaccelerator.phpeaccelerator緩存類
db/mysql.phpmysql擴(kuò)展MySQL數(shù)據(jù)庫驅(qū)動(dòng)
db/mysqli.phpmysqli擴(kuò)展MySQL數(shù)據(jù)庫驅(qū)動(dòng)
7/
55
___
Sinope
3.開發(fā)指南
3.1限制器
系統(tǒng)限制器類位于control書目,限制器調(diào)度由framework/core/base.php中
control。方法依據(jù)act和op
參數(shù)完成,假如act或op參數(shù)為空,系統(tǒng)會自動(dòng)賦值“index”。限制器類文件名一般為
業(yè)務(wù)名稱,類名稱一般為業(yè)務(wù)名稱+“Control”,例如系統(tǒng)的品牌限制器類文件為
control/brand.php,類名為brandControlo
跟據(jù)商城業(yè)務(wù)須要,系統(tǒng)內(nèi)置三個(gè)限制器父級類,BaseHomeControl.
BaseBuyControl、BaseMemberControl和BaseSellerControl分別適用于前臺展
示、下單、會員中心、商家中心三類限制器,品牌展示須要繼承BaseHomeControl類。
<?php
/**
*品牌展示
版權(quán)聲明…
*/
defined('InShopNC')orexit('Access
Invalid!');classbrandControl
extendsBaseHomeControl{
publicfunction
indexOp(){〃讀取
語言包
Language::read('home_brand
-index');〃運(yùn)用模型獲得品牌
列表$model_brand=
Model('brand');
$brand_list=$model_brand-
>getBrandL運(yùn)t();〃向模板拋出內(nèi)容
Tpl::output('brand_list',$br
and_list);〃設(shè)置頁面標(biāo)題
Tpl::output('html_title',Language::get('brand_inde
x_brand_list?;//輸出SEO設(shè)置信息
Model(,seo')->type('brand')->showO;
8/
55
ShopNC
〃調(diào)用模板展示
Tpl::showpage('brand');
}
publicfunction
searchOp(){/***
內(nèi)容略…
*/
}
)
?>
訪
問://vsiteurl>/index.php?act
=brand將會執(zhí)行brandControl類
的indexOp方法
訪
問://vsiteurl>/index.php?act=brand&o
p=search將會執(zhí)行brandControl類的
searchOp方法
3.2模型
3.2.1實(shí)例化
運(yùn)用Model。方法創(chuàng)建模型,可以創(chuàng)建一個(gè)空模型實(shí)例,然后全用該實(shí)例完成對
不同表的操作,如:$model=Model。;
也可以實(shí)例化一個(gè)非空模型實(shí)
例,如:$model=
Model('member');
系統(tǒng)首先會查找文件與內(nèi)部的memberModel類是否存在,實(shí)例化該類,假如不存
在,則實(shí)例化框架供應(yīng)的模型類,實(shí)例化模型更具體的信息可查看四模型
3.2.2內(nèi)置方法
系統(tǒng)模型供應(yīng)了一系列快捷操作的方法,可以大幅提高開發(fā)效率。目前已供應(yīng)的方法主要
有select、find、limit%table、order、where、field、on、join、count、,attr、
showpage>insert、insertAlkdelete>update>group、having、distinct>clear>
query>execute>sum、avg>max、min、setlnc>setDec、和動(dòng)態(tài)方法getby_>
getfby_o
1.Select方法:取得查詢信息,返回結(jié)果為數(shù)組,假如未找到數(shù)據(jù)返回null,select一般
在where,order,tabale
9/
55
Shop。"
等方法的后面,作為最終一個(gè)方法來
運(yùn)用。如:$1110€1日=
Model('member');
//查詢會員表全
部信息$model-
>select();
//取得性別為1的會員列表信息,留意:select方法須要在連貫操作
中的最終一步出現(xiàn)$model->where(array('member_sex,=>1))-
>select();
Select方法可以傳入主鍵ID,系統(tǒng)會自動(dòng)查找對
應(yīng)信息,如:〃查詢主鍵ID為5的會員信息
$model=
Model('member');
$model->select(5);
2.Find方法:取得一條記錄信息,find同select一樣,一般作為最終一個(gè)
方法來運(yùn)用,如:$model=Model('member');
//查詢ID為5的會員信
息
$model->where(array('member_id'=>5))->find0;
Find方法可以傳入主鍵ID,系統(tǒng)會自動(dòng)查找對應(yīng)信息,如:
$model=
Model('member');
//查詢主鍵ID為5的會員
信息
$model->find(5);
3.Limit方法:指定返回多少條記錄數(shù),
$model=
Model('member');
$modd->limit(4)-
>select();〃等同于SELECT*FROMmemberLIMIT4;
$model->limit('4,10')-
>select();〃等同于SELECT*FROMmemberLIMIT4,10;
4.Table方法:指定要操作的數(shù)據(jù)表名稱,返回模型實(shí)例本身,如:
$model=ModelQ;
//查詢主鍵ID為5的會員信
息$model-
>table('member')->find(5);
多表聯(lián)合查詢時(shí),可以傳入多個(gè)表名稱,如:
//內(nèi)鏈接查詢member和store表,并返
回前兩條記錄$on=
'store.member_id=member.member_id'
$model->table('member,store')->join(,inner')->on($on)->limit(2)->select();
假如實(shí)例化時(shí)指定了表名,則可以不運(yùn)用table方法指
定表名,如:$model=Model('member');
10/
55
s^nop
$model->limit(4)->select();//查詢前條4會員記錄
5.Order方法:指定排序的參數(shù),返回模型實(shí)例本身,如:
$model->table('member')->order('member_iddesc')-
>limit(4)->select();
也可指定多個(gè)字段進(jìn)行排序,如:$model->table('member,)-
>order('member_iddesc,member_sexasc')->select();
6.Where方法:指定sql執(zhí)行的條件,返回模型實(shí)例本身,入可傳入數(shù)
組或字段串,如:〃傳入數(shù)組條件
$model-
>where(array('member_id'=>5))->find0;
〃傳入字符串條件$model-
>where(array('member_id=5'))->find();
〃傳入多表關(guān)聯(lián)條件$model-
>table('member,store');
$model->where('store.store_id=member.store_idandstore.store_id=2')->find();
7.Field方法:指定要查詢的字段,不運(yùn)用field方法時(shí),默認(rèn)查詢
全部字段,如:$model->field('member_id,member_name')-
>select();
8.On方法:指定多表聯(lián)查時(shí)的字段關(guān)系。
9.Join方法:指定多表聯(lián)查時(shí)的鏈接類型,支持內(nèi)鏈接、左鏈接(默認(rèn))、右鏈接。On與
join方法須要一起運(yùn)用,如:
$model=Model();
〃內(nèi)鏈接查詢member和store表,返回會員ID
為6的記錄信息$field=
'member.member_name,store.store_name';
$on='store.member_id=member.member_id';$model-
>table('member,store')->field($field);$model->join('inner')-
>on($on)->where(array('member.member_id->6))->find();
三表關(guān)聯(lián)查詢?nèi)?/p>
下:$model=
Model();
〃內(nèi)鏈接查詢member和store,然后左鏈接store_class,查詢會員
ID為6的記錄信息$field=
'member.member_name,store.store_name,store_class.sc_nam
e';
$on=
'store.member_id=member.member_id,store.sc_id=store_clas
s.sc_id';$model->table('member,store,store_class')-
>field($field);$model->join('inner,left')->on($on)-
>where('member.member_id=6')->find0;
io.Count方法:返回記錄總數(shù)量,如:
11/
55
$model=
Model('member');//}§.
回會員表總行數(shù)$model-
>count();〃返回會員ID
大于15的記錄數(shù)
$model->where('member_id>15,)->count();
ii.Page方法:實(shí)現(xiàn)記錄分頁,格式為page(每頁顯示數(shù),總記錄數(shù)),總記錄數(shù)可以人為指
定,也可以為空讓系統(tǒng)自動(dòng)去計(jì)算,如:〃每頁顯示10條數(shù)據(jù)
$model=Model('member');〃系統(tǒng)會跟據(jù)每頁顯示數(shù)和
已知屬性自動(dòng)計(jì)算總記錄數(shù)$model->page(10)-
>order('member_iddesc')->select();//每頁顯示10條數(shù)
據(jù),指定總記錄為1000條,系統(tǒng)將不再計(jì)算總記錄數(shù)
$model->page(10,1000)->order('member_iddesc')-
>select();
留意:假如同時(shí)運(yùn)用where和page方法時(shí),where方法要在page方
法前面運(yùn)用,如:$model->where('id=1')->page(10)->select();//IE
確$model->page(10)->where('id=1->select();//
12.Showpage方法:返回分頁超鏈接,結(jié)合page方法完
成分頁,如:〃顯示上一頁下一下鏈接
$model->showpage(l);〃樣式1
$model->showpage(2);〃樣式2(默認(rèn))
13.Insert方法:插入單行數(shù)據(jù),并返回最新插入的主鍵ID,假如插入失敗返回
false,完整格式如下:insert($data=",$replace=false,$options=array())
〃向link表插入數(shù)據(jù),并返回最
新主鍵ID$model=
Model('table');
$data=
array('link_title->'ShopNC,
'link_url->",
'link_sort'=>32,
);$model-
>insert($data);
Insert方法支持延遲插入,加入$options參數(shù)即
可,如:$model-
>insert($data,false,array('priority'=>,DELAYE
D'));
12/
55
Shop^
Insert方法同樣支持replace操作,將其次個(gè)參數(shù)設(shè)置為
true即可,如:$model=ModelQ;
$data=
array('link_title->'ShopNC'
,'link_urr=>",
'link_sort'=>32,
'link_id'=>
30);
$model->table('link')->insert($data,true);
14.InsertAU方法:實(shí)現(xiàn)批量插入數(shù)
據(jù),如:$model=
Model('link');
$data=
array(arr
ay(
新浪,,
'link_url->",
'link_sort'=>32,
),
array('link_title'=
>'百度',
'link_urr=>",
'link_sort->30,
)
);$model-
>insertAll($data);
15.Delete方法:刪除記
錄,如:$model=
ModeK'Hnk');//刪除主
鍵為5的記錄$model-
>delete(5);
〃或者$model-
>where(array(,link_id,=>5))->delete();
16.Update方法:數(shù)據(jù)更新,假如更新內(nèi)容含有主鍵下標(biāo),自動(dòng)以該主鍵
為更新條件,如:$model=Model();
13/
55
Shopman
〃更新主鍵(link_id)為37的記
錄信息$data=
array('link_title->'ShopNC',
'link_url->",'link_sort'=>32,
'Unk_id'=>
37);
$model->table('link')-
>update($data);〃指定更新條
件
$data=
array('link_title'=>'ShopNC,
,'link_urr=>",
,link_sort->32
);$model->table('link')->where(array('link_id->37))-
>update($data);
17.Group方法:實(shí)現(xiàn)分組功
能,如:〃查詢每個(gè)店鋪發(fā)
布商品的數(shù)量$model=
Model('goods');
$model->field('store_id,count(*)ascount')->group('store_id')->selectO;
18.Having方法:結(jié)合group方法,進(jìn)行條件過濾,傳入?yún)?shù)為字
符串形式,如:〃查找發(fā)布商品超過500的店鋪ID
$model=Model('goods');
$model->field('store_id,count(*)asnc_count,)->group('store_id')-
>having('nc_count>500')->select();
19.Distinct方法:可以去除列中相同的值,distinct只接受一個(gè)參數(shù)值true,假如不須要重
復(fù)值篩選,不運(yùn)用該方法即可。
〃查找擁有商品的店
鋪主鍵$model=
ModelQ;
$model->table('goods')->field('store_id')->distinct(true)->select();
20.Clear方法:清空單個(gè)表中的內(nèi)容,返回
true/false,如:〃清空link表
$model=ModelQ;
$model->table('link')-
>clear();
14/
55
Shop■^■
21.Query/execute方法,兩個(gè)方法均用于干脆執(zhí)行SQL語句,query方法用于查詢,
execute方法用于更新、寫入和刪除操作,如:
Model()->queiy('SELECT*FROM'shopnc_member'LIMIT10');
Model()->execute('UPDATE'shopnc_goods'SETgoods_click=1000
WHEREgoods_id=2');
22.Sum/Avg/Max/Min方法:求和、求平均值、取最大值、
取最小值,如:$model=Model();
〃返回全部商品總價(jià)格之和
$model->table('goods')-
>sum('price');
//上面等同于SQL:SELECTSUM(price)ASnc_sumFROM'goods'
〃取商品表中全部商品的平均價(jià)
格$model->table('goods')-
>avg('price');
〃以上等同于SQL:SELECTAVG(price)ASnc_avgFROM'goods'LIMIT1
//取商品的最高價(jià)$model-
>table('goods')->max('price');
//以上等同于SQL:SELECTMAX(price)ASnc_maxFROMgoods'LIMIT1
〃取商品的最低價(jià)$model-
>table(,goods')->min(,price,);
〃以上等同于SQL:SELECTMIN(price)ASnc_minFROM'goods'LIMIT1
23.自增/自減:系統(tǒng)運(yùn)用setlnc和setDec完成自增和自
減,示例如下:$model=Model();
〃使主鍵值為2的商品點(diǎn)擊量加1000$model->table('goods')-
>where(array('goods_id->2))->setInc('goods_click',1000);//等同
于:UPDATE'goods'SETgoods_cUck=goods_cHck+3WHERE
(goods_id='2')
〃結(jié)合exp參數(shù),運(yùn)用該商品點(diǎn)擊
量減1000$model=
Model('goods');
$data=
array('goods
_id'=>2,
'goods_click'=>array('exp','goods_click-1000,));
15/
55
ShopMfl
$model->update($data);
〃等同于:UPDATE'goods'SETgoods_cUck=goods_cKck-1000WHERE
(goods_id='2')
24.動(dòng)態(tài)方法:系統(tǒng)內(nèi)置getby_和getfby_兩個(gè)動(dòng)態(tài)方
法,格式如下:getby_+字段名(字段值)
getfby,+條件字段名(條件字段值,返
回字段名)結(jié)合示例來說明動(dòng)態(tài)方法的運(yùn)
用
$model=Model('member');
〃運(yùn)用getby_動(dòng)態(tài)方法,取得member_name為
kevin的會員信息$model-
>getby_member_name('kevin');
〃等同于SQL:SELECT*FROM'member'WHERE(='kevin')
LIMIT1
//運(yùn)用getfby_方法,取得memberjd為6的會員名
$a=$model->getfby_member_id(6,'member_name');//返回kevin
〃等同于SQL:SELECTmember_nameFROM'shopnc_member'WHERE
(memberjd='6')LIMIT1
25.設(shè)置SQL執(zhí)行優(yōu)先級:系統(tǒng)支持運(yùn)用SQL關(guān)鍵字LOW_PRIORITY>DELAYED、
HIGH.PRIORITY,格式如下:attr(關(guān)鍵字)
結(jié)合示例來說明動(dòng)態(tài)方法
的運(yùn)用$model=
Model('goods');
$model->where(array('goods_id'=>100))-
>attr('LOW_PRIORITY');$model-
>update(array('goods_click'
=>array('exp','goods_click+1')));
//等同于
//UPDATELOW_PRIORITY'shopnc_goods'SETgoods_cHck=goods_cUck+1
WHERE(goodsjd='100
,)
3.2.3CURD操作
讀取數(shù)據(jù)
系統(tǒng)中可運(yùn)用select、find、queiy方法完
成查詢操作。運(yùn)用select方法查詢信息:
$model=
Model('member');//
查詢會員表全部信息
$model->select();
16/
55
s^nop
〃取得性別為1的會員列表信息,留意:select方法須要在連貫操作
中的最終一步出現(xiàn)$model->where(array('member_sex'=>1))-
>select();
//查詢主鍵ID為5的
會員信息$model-
>select(5);
運(yùn)用find方法查詢信
息:$model=
Model('member');//
查詢ID為5的會員信
息
$model-
>where(array('member_id'=>5))->find0;
//或者
$model->find(5);
運(yùn)用query方法取得查詢信息:
Model()->query('SELECT*FROM'shopnc_member'LIMIT10');
運(yùn)用動(dòng)態(tài)方法取得查詢
信息:$model=
Model('member');
〃運(yùn)用getby_動(dòng)態(tài)方法,取得member_name為
kevin的會員信息$model-
>getby_member_name('kevin');
〃等同于SQL:SELECT*FROM'memberWHERE(member_name='kevin')
LIMIT1
//運(yùn)用getfby_方法,取得memberjd為6的會員名
$a=$model->getfby_member_id(6,'member_name,);//返回kevin
〃等同于SQL:SELECTFROM'shopnc_member'WHERE
(memberjd='6')LIMIT1
更新數(shù)據(jù)
系統(tǒng)可運(yùn)用update、execute方法完成
更新操作。$model=Model();
〃更新主鍵(link_id)為37的
記錄信息$data=array(
'Hnk_title'=>,ShopNC,
'link_url->",
'link_sort->32,
'Unk_id'=>37
);
17/
55
Shop^
$model->table('link')->update($data);//系統(tǒng)自動(dòng)以主鍵link_id為更新
條件
//指定更新
條件$data
=array(
,Hnk_title'=>'ShopNC,,
,Knk_url'=>",'nnk_sort'=>32
);$model->table('link')->where(array(,link_id->37))-
>update($data);〃運(yùn)用execute方法執(zhí)行更新
Model()->execute('UPDATE'shopnc_goods'SETgoods_click=1000
WHEREgoods_id=2');
插入數(shù)據(jù)
系統(tǒng)可運(yùn)用insert、insertAll、execute方法完
成插入操作。運(yùn)用insert方法插入單行數(shù)據(jù):
〃向link表插入數(shù)據(jù),并返回最新生
成的主鍵ID$model=
Model('table');
$data=
array('link_title->'ShopNC'
,'link_urr=>",
'link_sort'=>32,
);$model-
>insert($data);
Insert方法支持延遲插入,加入$options參數(shù),
如:$model-
>insert($data,false,array('priority->'DELAYE
D'));
運(yùn)用Insert方法執(zhí)行replace操作,將其次個(gè)參數(shù)設(shè)
置為true,如:$model=ModelQ;
$data=
array('link_title->'ShopNC'
,'Hnk_urr=>",
'link_sort->32,
'link_id'=>30
);
18/
55
Shop^
$model->table('link')->insert($data,true);
運(yùn)用insertAll方法:實(shí)現(xiàn)批量插
入數(shù)據(jù):$model=
Model('link');
$data=
array(arra
y(
'新浪',
'link_url'=>",
'link_sort'=>32,
),
array('link_title-
>'百度',
'link_urr=>",
'link_sort'=>30,
)
);
$model->insertAll($data);
也可以運(yùn)用execute干脆執(zhí)行SQL語句來插
入數(shù)據(jù)。
刪除數(shù)據(jù)
系統(tǒng)可運(yùn)用delete、clear、execute方法完
成刪除操作。運(yùn)用delete方法刪除數(shù)據(jù):
$model=
Model('link');//H
除主鍵為5的記錄
$model->delete(5);
〃或者
$model->where(array('link_id'=>5))-
>delete();
運(yùn)用clear方法清空數(shù)據(jù):
//清空Hnk表
$model=
ModelQ;
$model->table('link')->clearO;
也可以運(yùn)用execute干脆執(zhí)行SQL語句來刪
除數(shù)據(jù)。
19/
55
Sinope
3.2.4運(yùn)算符
系統(tǒng)對常用運(yùn)算符的運(yùn)用進(jìn)行了二次封裝,運(yùn)用
便利、快捷。gt:大于(>)
egt:大于等于
(>=)It:小于
(<)
elt:小于等于
(<=)eq:等于
(=)neq:不等
于(!=)
notlike:NOT
LIKE
like:同sql中的LIKE
between:同sql中的
BETWEEN[not]in:同
sql中的[NOT]IN
示例:〃為便于演示,這里將全部運(yùn)算符的運(yùn)用均排列出
來,以下代碼不行干脆運(yùn)行$condition=arrayO
//uid>5
$condition['uid']=
array('gt',5);//uid<5
$condition['uid']=
array('It',5);//uid=5
$condition['uid']=
array('eq',5);//uid>=5
$condition['uid']=
array('egt',5);//uid<=5
$condition['uid']=
array('elt',5);//uid在
3,5,19之間一個(gè)或多個(gè)
$condition['uid']=
array('in','3,5,19');//uid是
3,5,19中的任何值
$condition['uid']=array('not
in','3,5,19');//5<=uid<=19
$condition['uid']=array('between','5,19');
20/
55
Shop
//product_namelike'a%'
$condition['product_name']=
array(array('like','a%'));//product_name
like'a%'orproduct_namelike'b%'
$condition['product_name']=
array(array(,like','a%'),array('like',,b%'),'or,);〃會員昵稱或姓名有
一個(gè)含有shopnc字樣的即可滿意
$condition['member_name|member_tmame']=
array(array('like','%shopnc%'));〃會員昵稱或姓名都必需含有
shopnc字樣的才可滿意
$condition['member_name&member_tmame']=
array(array('like','%shopnc%'));
//以上各條件默認(rèn)均是“AND"關(guān)系,即每個(gè)條件都須要滿意,假如想滿意一個(gè)即可
("OR"關(guān)系),可增加以下條件
$condition['_op']='or';
〃最終將以上條件傳入
where方法
$list=Model(TABLE)->where($condition)->selectO;
3.3視圖
系統(tǒng)采納MVC模式,由視圖類Tpl將變量拋到模板并進(jìn)行輸出,運(yùn)用setDir設(shè)置模板
書目,運(yùn)用。utput方法拋出變量,運(yùn)用showpage顯示模板,拋出的變量會賦值到模板
的$output數(shù)組中。
Tpl::setDir('home');//指定模板位于templates/default/home
Tpl::output('name','shopnc');//向模板拋出變量
Tpl::showpage('index');//顯示模板
/templates/default/home/index,phpecho
$output['name1;//在模板中運(yùn)用$output[$var]干脆輸出
3.4調(diào)試
開啟調(diào)試模式可以看到更加具體的系統(tǒng)運(yùn)行信息,調(diào)試模式的作用在于顯示更多的運(yùn)行
日志信息,以便在項(xiàng)目開發(fā)過程中快速定位和解決問題。開啟調(diào)試狀態(tài)的效果如下:
21/
55
S/1Q0晨,個(gè)
[4]=>F:\root\shopnc_2014\trunk\data\config\config.ini.php
開啟調(diào)試模式須要在中設(shè)置
$config['debug']=true;
3.5緩存
系統(tǒng)可以對數(shù)據(jù)進(jìn)行多種形式緩存,包括文件方式、共享內(nèi)存方式和數(shù)據(jù)庫方式。目前已
支持的緩存方式包括:、ape、eAccelerator>memcache和xcache,開發(fā)者也可以開
發(fā)更加適合自己的緩存。
系統(tǒng)由Cache緩存類進(jìn)行緩存操作,由Cache::getlnstance方法完
成緩存類型實(shí)例化:〃取得memcache緩存實(shí)例
$obj_cache=
Cache::getlnstance('memcache');//
緩存賦值
$obj_cache-
>set('uid',1000);〃讀
取緩存$obj_cache-
>get('uid');//刪除緩存
$obj_cache->rm('uid');
系統(tǒng)須要將部分常用表信息(如基本配置表、商品分類表、快遞表、SEO表等)生成緩
存,為了便于操作,系統(tǒng)對這些表的緩存處理封裝到專有的cache模型中,運(yùn)用
Modeircache)->call(表名)即可得到符合緩存格式的表信息。
為了便利對緩存的操作,系統(tǒng)新增了H和F方法,H方法對緩存類操作再次進(jìn)行封
裝。如取得系統(tǒng)cache/setting.php緩存信息:
H('setting');
內(nèi)部執(zhí)行過程為:首先取得file
緩存實(shí)例$obj_cache=
Cache::getlnstance('file')
推斷操作類型(刪除緩存?、緩存賦值?緩存讀
???),然后執(zhí)行$obj_cache->get(,setting);
取得緩存內(nèi)容,至此執(zhí)行完畢。
22/
55
S/IQPR,
運(yùn)用H方法將setting表信息生成到文件緩存:
H('setting',true,'file');
內(nèi)部執(zhí)行過程為:首先取得file類型
緩存實(shí)例,$obj_cache=
Cache::getlnstance('file')
推斷操作類型(刪除緩存?、緩存賦值?緩存讀
取?),然后執(zhí)行$obj_cache->rm('setting);
刪除原有setting緩存,實(shí)例化cache模型并執(zhí)行.setting方法來取得
setting表中的內(nèi)容,$list=Model('cache')->call($key);
運(yùn)用set方法寫入緩存
$obj_cache->set($key,$list,
null,$expire);
最終返回true,至此緩存生成勝利。
F方法也可以操作緩存,但它與H方法不同,F(xiàn)只是一種快速度讀、寫文件緩存的方
法,不行用于內(nèi)存緩存的操作,F(xiàn)方法不能干脆將數(shù)據(jù)表內(nèi)容生成緩存,只可將PHP中已
經(jīng)存的內(nèi)容(如數(shù)組、字符串等)生成到文件緩存,在讀取文件緩存時(shí),舉薦運(yùn)用效率更高
的F方法。
F('setting');〃取得setting緩存
F('setting',$data);〃將$data數(shù)組生成到setting文件緩存
3.6平安
系統(tǒng)為愛護(hù)書目與文件平安,在全部敏感的書目中放置一個(gè)1字節(jié)的index.html文
件,內(nèi)容為一個(gè)空格,以避開當(dāng)服務(wù)器的DirectoryListing打開時(shí),服務(wù)器文件被索
引和列表。
為防止系統(tǒng)內(nèi)文件被非法調(diào)用,系統(tǒng)會在所運(yùn)用的.php文件頭部增
加有合法性驗(yàn)證:defined('InShopNC')orexitfAccessInvalid!');
4.函數(shù)與類庫
4.1常量參考
[DS]=>書目分隔符/
[InShopNC]=>合法調(diào)用推
斷標(biāo)記
[StartTime]=>系統(tǒng)起先運(yùn)行時(shí)間(如1350096132.6587)
23/
55
[TIMESTAMP]=>系統(tǒng)當(dāng)前時(shí)間(如
1350096132)[SHOP_SITE_URL]=>
商城URL地址[CMS_SITE_URL]=>
CMSURL地址[CIRCLE_SITE_URL]=>
圈子URL地址[ADMIN_SITE_URL]=>
后臺URL地址
[MICROSHOP_SITE_URL]=>微商城
URL地址[UPLOAD_SITE_URL]=>圖片
URL地址[RESOURCE_SITE_URL]=>
資源URL地址[CHARSET]=>系統(tǒng)編碼
(UTF-8/GBK)[DBDRIVER]=>數(shù)據(jù)
庫訪問驅(qū)動(dòng)(mysqli、mysql)
[SESSION_EXPIRE]=>緩存周期,單位
(秒)[LANG_TYPE]=>語言包,默認(rèn)簡
體中文zh_cn[COOKIE.PRE]=>cookie
前綴,系統(tǒng)自動(dòng)生成[DBPRE]=>數(shù)據(jù)庫
表前綴蝴shopnc_[ATTACH_PATH]
=>附件書目,默認(rèn)upload
[ATTACH.COMMON]=>通用附件書目默認(rèn)
upload/common[ATTACH_AVATAR]=>我書目默認(rèn)
upload/avatar[ATTACH_STORE]=>店鋪信息書目默認(rèn)
upload/store[ATTACH.GOODS]=>店鋪產(chǎn)品書目默認(rèn)
upload/store/goods[ATTACH_AUTH]=>店鋪?zhàn)C件書目
默認(rèn)upload/auth[ATTACH.MOBILE]=>手機(jī)客戶端內(nèi)
容書目默認(rèn)upload/mobUe[ATTACH_LINK]=>友情鏈
接logo書目默認(rèn)upload/Hnk[ATTACH.ARTICLE]=>
文章附件書目默認(rèn)upload/article[ATTACH.BRAND]=>
品牌附件書目默認(rèn)upload/brand[ATTACH_ADV]=>廣
告圖片書目默認(rèn)upload/adv[ATTACH_ACTIVITY]=>促
銷活動(dòng)書目默認(rèn)upload/activity[ATTACH_COUPON]
=>實(shí)惠券書目默認(rèn)upload/coupon
[ATTACH_WATERMARK]=>水印圖片書目默認(rèn)
upload/watermark[ATTACH.POINTPROD]=>積分商
品圖片書目upload/pointprod[ATTACH_SPEC]=>
自定義規(guī)格圖片書目默認(rèn)upload/spec
[ATTACH_GROUPBUY]=>團(tuán)購圖片書目默認(rèn)
upload/groupbuy[ATTACH.SLIDE]=>店鋪二維碼書目
默認(rèn)upload/store/slide
24/
55
S^nop^
[ATTACH_VOUCHER]=>代金券模板書目默認(rèn)
upload/voucher[MD5_KEY]=>MD5_KEY值系
統(tǒng)自動(dòng)生成,加密解密時(shí)用
4.2主要函數(shù)參考
4.2.1系統(tǒng)函數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度物聯(lián)網(wǎng)解決方案代理授權(quán)銷售合同范本4篇
- 2024銅門制安工程招投標(biāo)合同
- 2025年度校園文化節(jié)影視展贊助合同3篇
- 2025年歷史建筑圍墻修繕施工合同4篇
- 2025年度廚房設(shè)備翻新與性能提升合同3篇
- 2025年度智能大廈腳手架設(shè)計(jì)與施工一體化合同4篇
- 2025年cfg樁基施工綠色施工技術(shù)交流與合作合同3篇
- 2024銷售委托合同范本
- 2025年度出租車駕駛員權(quán)益保障合同3篇
- 2025年度新型冷鏈物流承包運(yùn)輸合同4篇
- 非誠不找小品臺詞
- 2024年3月江蘇省考公務(wù)員面試題(B類)及參考答案
- 患者信息保密法律法規(guī)解讀
- 老年人護(hù)理風(fēng)險(xiǎn)防控PPT
- 充電樁采購安裝投標(biāo)方案(技術(shù)方案)
- 醫(yī)院科室考勤表
- 鍍膜員工述職報(bào)告
- 春節(jié)期間化工企業(yè)安全生產(chǎn)注意安全生產(chǎn)
- 保險(xiǎn)行業(yè)加強(qiáng)清廉文化建設(shè)
- Hive數(shù)據(jù)倉庫技術(shù)與應(yīng)用
- 數(shù)字的秘密生活:最有趣的50個(gè)數(shù)學(xué)故事
評論
0/150
提交評論