ShopNCB2B2C商城開發(fā)手冊_第1頁
ShopNCB2B2C商城開發(fā)手冊_第2頁
ShopNCB2B2C商城開發(fā)手冊_第3頁
ShopNCB2B2C商城開發(fā)手冊_第4頁
ShopNCB2B2C商城開發(fā)手冊_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(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(面對對象)方式進行核心框架搭建,結(jié)合

MVC模式進行開發(fā),可以支持Windows/Unix服務(wù)器環(huán)境,需PHP5.3與以上版本支

持,可運行于包括Apache、IIS和Nginx在內(nèi)的多種WEB服務(wù)器。

2.架構(gòu)設(shè)計

2.1系統(tǒng)特性

ShopNC借鑒了國內(nèi)外優(yōu)秀的開源程序與開發(fā)模式,運用面對對象的開發(fā)結(jié)構(gòu)、MVC

模式、單一入口、ORM影射等。封裝了CURD和一些常用操作,在安裝部署、數(shù)據(jù)查詢、

數(shù)據(jù)緩存、數(shù)據(jù)驗證、模型處理、視圖與布局、路由處理、SEO支持、大數(shù)據(jù)支持等方面

表現(xiàn)穩(wěn)定。

?MVC設(shè)計

ShopNCB2B2C商城融合了MVC模式進行開發(fā),系統(tǒng)開發(fā)高效,各個

節(jié)點結(jié)構(gòu)更加清楚。模型(M):模型的定義由Model類來完成。

限制器(C):由框架核心和Action

共同完成。視圖(V):由Tpl類和模

板文件組成。

MVC作為一種模式只是供應(yīng)了一種靈敏開發(fā)的手段,ShopNC系統(tǒng)融入MVC模式但

不拘泥于MVC本身。?緩存機制

B2B2C商城支持包括文件緩存、數(shù)據(jù)表緩存以與從種內(nèi)存緩存(Redis、APC、

Memcache、eAccelerator

和Xcache),用戶可跟據(jù)實際運行環(huán)境自行設(shè)置。

?調(diào)試模式

系統(tǒng)供應(yīng)了調(diào)試模式,可用于開發(fā)過程的不同階段,包括開發(fā)、測試和演示等狀況,滿

意調(diào)試開發(fā)過程中的日志和分析須要,確定將來系統(tǒng)以最佳的方式進行部署。

?查詢機制豐富系統(tǒng)內(nèi)建豐富的查詢機制,包括組合查詢、復(fù)合查詢、區(qū)間查詢、統(tǒng)

計查詢、定位查詢、多表查詢、子查詢和

原生查詢,運用數(shù)據(jù)查詢簡

潔高效。?動態(tài)模型

2/

55

Shop^f?

系統(tǒng)中無需創(chuàng)建對應(yīng)的模型類、即可輕松完成CURD操作,使數(shù)據(jù)

庫操作更加簡潔。?支持字段檢測

系統(tǒng)支持緩存字段信息,支持非法字段過濾和字段類型強制轉(zhuǎn)換,確保數(shù)

據(jù)操作的平安性。?高效的搜尋機制

系統(tǒng)引入第三方搜尋引擎,運用內(nèi)存緩存、文件緩存、數(shù)據(jù)表緩存相結(jié)合,最大化削減

搜尋給系統(tǒng)帶來的影響。?易用性

LAMP架構(gòu)保證跨平臺、MVC模塊化開發(fā)保證易維護與擴展、系統(tǒng)架構(gòu)保

證集群部署與擴展。?高平安書目讀寫分別,框架層驗證與過濾、多層級口

令愛護、完善的角色與權(quán)限限制。

?大數(shù)據(jù)

緩存集群、數(shù)據(jù)庫集群、存儲集群(或分布式)和WEB集

群支撐大數(shù)據(jù)。?高并發(fā)'高可用

數(shù)據(jù)緩存、動靜分別、集群(或分布式)部署支撐高并發(fā),數(shù)據(jù)庫集群、存儲集群、宕機檢

測支撐高可用。

2.2執(zhí)行流程

系統(tǒng)采納單一入口模式,系統(tǒng)框架執(zhí)行流程如下:

ShopNC核心框架用戶訪問——?單一入口

a加裁基本信息

加載數(shù)據(jù)庫夔動

加載緩存驅(qū)動

加載模板驅(qū)動

商城基類

加我其它

3/

55

x^nop1'

2.3書目結(jié)構(gòu)

系統(tǒng)主要書目:

admin后臺管理書目

chatIM書目

circle圈子書目

cmsCMS書目

microshop微商城書目

shop商城書目

core框架書目

data公共資源書目

mobile手機客戶端API

商城

data>api第三方API書目

data>cache緩存文件書目

data>config配置文件書目

data>crontab定時觸發(fā)文件書目

data>log系統(tǒng)運行日志書目

data>sessionSESSION文件存

放書目

data>upload上傳圖片書目

core>系統(tǒng)框

framework架

core>framework>緩存驅(qū)

cache動

core>framework>核心文

core件

數(shù)據(jù)層驅(qū)

core>framework>db動

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è)計

ShopNCB2B2C商城融入MVC模式進行開發(fā),系統(tǒng)開發(fā)高效,各個

節(jié)點結(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)會自動賦值"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的運用敏捷,可以無需進行任何模型定義,就可以完成對

相關(guān)數(shù)據(jù)表的CURD操作,這就是動態(tài)模型處理,不須要重復(fù)進行模型實例化即可實現(xiàn)對

不同表的操作。新模型的處理支持向下兼容。

運用Model。方法創(chuàng)建模型,可以創(chuàng)建一個空模型實例,然后運用該實例完成對

不同表的操作,如:$model=Model();

$model->table('member,)->find(5);//查詢主鍵ID為

5的會員信息$model->table「brard)->delete⑸;//

刪除主鍵為5的品牌也可以實例化一個非空模型實例,

如:

$model=Model('member');

系統(tǒng)首先會查找文件與內(nèi)部的memberModel類是否存在:

a)假如存在,將實例化中的memberModel類,假如需運用框架已封裝的方法

(select、find、delete、insert等),須要在memberModel類中繼承Model類

并在構(gòu)造方法中觸發(fā)父類構(gòu)造方法,

5/

55

Shop

classmemberModelextends

Model{publicfunction

_construct(){

parent::_construct('member');

}

〃除運用系統(tǒng)供應(yīng)方法以外,還可以自定義方法

//publicfunction

myfuc(){〃添加

業(yè)務(wù)邏輯

}

b)假如不存在,將實例化framework/core/model.php中的Model類,也就是只實

例化框架供應(yīng)的模型類

(動態(tài)模型)

$model=Model('member');

$model->find(5);//查詢主鍵為5

的會員信息

$model->table('brand')->delete(5);//刪除主鍵為5的品牌,即使創(chuàng)建member模

型,還是可以運用該模

型的table。方法來操作其它表

2.7數(shù)據(jù)庫抽象層

ShopNCB2B2c商城供應(yīng)了多個數(shù)據(jù)庫訪問驅(qū)動,支持mysql、mysqU,系統(tǒng)會跟據(jù)

當(dāng)前的數(shù)據(jù)庫配置,自動調(diào)用相應(yīng)的數(shù)據(jù)層驅(qū)動,同時系統(tǒng)還支持?jǐn)?shù)據(jù)庫的集群配置,為

企業(yè)客戶保駕護航。

2.8視圖

視圖功能主要由Tpl類(core/framework/libraries/tpl.php)和模板文件組成(位

于templates書目下),Tpl

類完成限制器和模板文件的溝通,限制器通過Tpl類將數(shù)據(jù)輸送到模板,然后由模板輸出數(shù)

據(jù),ShopNCB2B2c商城未運用特定的模板語言,而是運用原生的PHP語法,省去了解

析模板語言的時間,加快響應(yīng)速度。

2.9函數(shù)和類庫

函數(shù)

系統(tǒng)函數(shù)均存放在framework/function書目中,考慮到以后的擴展,系統(tǒng)跟據(jù)功能將

函數(shù)拆分進入不同的文件中,

core.php存放系統(tǒng)的通用函數(shù)

goods.php存放處理商品、訂單、店鋪相關(guān)的信息

的函數(shù)rec_position.php舉薦位調(diào)用函數(shù)

6/

55

?一一一

seccode.php存放驗證碼操作的函數(shù)

thumb.php圖片裁剪函數(shù)

adv.php廣告調(diào)用函數(shù)

類庫

系統(tǒng)類庫主要存放在framework下的libraries、cache、core和tpl書目中,

Hbrarites存放的主要是完成專項功能的類,cache下是存放多種緩存驅(qū)動類,core下存

放的是核心基類和模型處理類。

libraries/email.php郵件發(fā)送類

libraries/cache,php緩存驅(qū)動入口類

libraries/gdimage.php水印類

libraries/chat.phpIM處理類

libraries/language.php語言包處理類

libraries/log.php日志類

libraries/page.php分頁類

libraries/resizeimage.php圖片裁切類

libraries/seccode.php驗證碼處理類

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擴展MySQL數(shù)據(jù)庫驅(qū)動

db/mysqli.phpmysqli擴展MySQL數(shù)據(jù)庫驅(qū)動

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)會自動賦值“index”。限制器類文件名一般為

業(yè)務(wù)名稱,類名稱一般為業(yè)務(wù)名稱+“Control”,例如系統(tǒng)的品牌限制器類文件為

control/brand.php,類名為brandControlo

跟據(jù)商城業(yè)務(wù)須要,系統(tǒng)內(nèi)置三個限制器父級類,BaseHomeControl.

BaseBuyControl、BaseMemberControl和BaseSellerControl分別適用于前臺展

示、下單、會員中心、商家中心三類限制器,品牌展示須要繼承BaseHomeControl類。

<?php

/**

*品牌展示

版權(quán)聲明…

*/

defined('InShopNC')orexit('Access

Invalid!');classbrandControl

extendsBaseHomeControl{

publicfunction

indexOp(){〃讀取

語言包

Language::read('home_brand

-index');〃運用模型獲得品牌

列表$model_brand=

Model('brand');

$brand_list=$model_brand-

>getBrandL運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實例化

運用Model。方法創(chuàng)建模型,可以創(chuàng)建一個空模型實例,然后全用該實例完成對

不同表的操作,如:$model=Model。;

也可以實例化一個非空模型實

例,如:$model=

Model('member');

系統(tǒng)首先會查找文件與內(nèi)部的memberModel類是否存在,實例化該類,假如不存

在,則實例化框架供應(yīng)的模型類,實例化模型更具體的信息可查看四模型

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、和動態(tài)方法getby_>

getfby_o

1.Select方法:取得查詢信息,返回結(jié)果為數(shù)組,假如未找到數(shù)據(jù)返回null,select一般

在where,order,tabale

9/

55

Shop。"

等方法的后面,作為最終一個方法來

運用。如:$1110€1日=

Model('member');

//查詢會員表全

部信息$model-

>select();

//取得性別為1的會員列表信息,留意:select方法須要在連貫操作

中的最終一步出現(xiàn)$model->where(array('member_sex,=>1))-

>select();

Select方法可以傳入主鍵ID,系統(tǒng)會自動查找對

應(yīng)信息,如:〃查詢主鍵ID為5的會員信息

$model=

Model('member');

$model->select(5);

2.Find方法:取得一條記錄信息,find同select一樣,一般作為最終一個

方法來運用,如:$model=Model('member');

//查詢ID為5的會員信

$model->where(array('member_id'=>5))->find0;

Find方法可以傳入主鍵ID,系統(tǒ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ù)表名稱,返回模型實例本身,如:

$model=ModelQ;

//查詢主鍵ID為5的會員信

息$model-

>table('member')->find(5);

多表聯(lián)合查詢時,可以傳入多個表名稱,如:

//內(nèi)鏈接查詢member和store表,并返

回前兩條記錄$on=

'store.member_id=member.member_id'

$model->table('member,store')->join(,inner')->on($on)->limit(2)->select();

假如實例化時指定了表名,則可以不運用table方法指

定表名,如:$model=Model('member');

10/

55

s^nop

$model->limit(4)->select();//查詢前條4會員記錄

5.Order方法:指定排序的參數(shù),返回模型實例本身,如:

$model->table('member')->order('member_iddesc')-

>limit(4)->select();

也可指定多個字段進行排序,如:$model->table('member,)-

>order('member_iddesc,member_sexasc')->select();

6.Where方法:指定sql執(zhí)行的條件,返回模型實例本身,入可傳入數(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方法:指定要查詢的字段,不運用field方法時,默認(rèn)查詢

全部字段,如:$model->field('member_id,member_name')-

>select();

8.On方法:指定多表聯(lián)查時的字段關(guān)系。

9.Join方法:指定多表聯(lián)查時的鏈接類型,支持內(nèi)鏈接、左鏈接(默認(rèn))、右鏈接。On與

join方法須要一起運用,如:

$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方法:實現(xiàn)記錄分頁,格式為page(每頁顯示數(shù),總記錄數(shù)),總記錄數(shù)可以人為指

定,也可以為空讓系統(tǒng)自動去計算,如:〃每頁顯示10條數(shù)據(jù)

$model=Model('member');〃系統(tǒng)會跟據(jù)每頁顯示數(shù)和

已知屬性自動計算總記錄數(shù)$model->page(10)-

>order('member_iddesc')->select();//每頁顯示10條數(shù)

據(jù),指定總記錄為1000條,系統(tǒng)將不再計算總記錄數(shù)

$model->page(10,1000)->order('member_iddesc')-

>select();

留意:假如同時運用where和page方法時,where方法要在page方

法前面運用,如:$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操作,將其次個參數(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方法:實現(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),自動以該主鍵

為更新條件,如:$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方法:實現(xiàn)分組功

能,如:〃查詢每個店鋪發(fā)

布商品的數(shù)量$model=

Model('goods');

$model->field('store_id,count(*)ascount')->group('store_id')->selectO;

18.Having方法:結(jié)合group方法,進行條件過濾,傳入?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只接受一個參數(shù)值true,假如不須要重

復(fù)值篩選,不運用該方法即可。

〃查找擁有商品的店

鋪主鍵$model=

ModelQ;

$model->table('goods')->field('store_id')->distinct(true)->select();

20.Clear方法:清空單個表中的內(nèi)容,返回

true/false,如:〃清空link表

$model=ModelQ;

$model->table('link')-

>clear();

14/

55

Shop■^■

21.Query/execute方法,兩個方法均用于干脆執(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();

〃返回全部商品總價格之和

$model->table('goods')-

>sum('price');

//上面等同于SQL:SELECTSUM(price)ASnc_sumFROM'goods'

〃取商品表中全部商品的平均價

格$model->table('goods')-

>avg('price');

〃以上等同于SQL:SELECTAVG(price)ASnc_avgFROM'goods'LIMIT1

//取商品的最高價$model-

>table('goods')->max('price');

//以上等同于SQL:SELECTMAX(price)ASnc_maxFROMgoods'LIMIT1

〃取商品的最低價$model-

>table(,goods')->min(,price,);

〃以上等同于SQL:SELECTMIN(price)ASnc_minFROM'goods'LIMIT1

23.自增/自減:系統(tǒng)運用setlnc和setDec完成自增和自

減,示例如下:$model=Model();

〃使主鍵值為2的商品點擊量加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ù),運用該商品點擊

量減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.動態(tài)方法:系統(tǒng)內(nèi)置getby_和getfby_兩個動態(tài)方

法,格式如下:getby_+字段名(字段值)

getfby,+條件字段名(條件字段值,返

回字段名)結(jié)合示例來說明動態(tài)方法的運

$model=Model('member');

〃運用getby_動態(tài)方法,取得member_name為

kevin的會員信息$model-

>getby_member_name('kevin');

〃等同于SQL:SELECT*FROM'member'WHERE(='kevin')

LIMIT1

//運用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)支持運用SQL關(guān)鍵字LOW_PRIORITY>DELAYED、

HIGH.PRIORITY,格式如下:attr(關(guān)鍵字)

結(jié)合示例來說明動態(tài)方法

的運用$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)中可運用select、find、queiy方法完

成查詢操作。運用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);

運用find方法查詢信

息:$model=

Model('member');//

查詢ID為5的會員信

$model-

>where(array('member_id'=>5))->find0;

//或者

$model->find(5);

運用query方法取得查詢信息:

Model()->query('SELECT*FROM'shopnc_member'LIMIT10');

運用動態(tài)方法取得查詢

信息:$model=

Model('member');

〃運用getby_動態(tài)方法,取得member_name為

kevin的會員信息$model-

>getby_member_name('kevin');

〃等同于SQL:SELECT*FROM'memberWHERE(member_name='kevin')

LIMIT1

//運用getfby_方法,取得memberjd為6的會員名

$a=$model->getfby_member_id(6,'member_name,);//返回kevin

〃等同于SQL:SELECTFROM'shopnc_member'WHERE

(memberjd='6')LIMIT1

更新數(shù)據(jù)

系統(tǒng)可運用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)自動以主鍵link_id為更新

條件

//指定更新

條件$data

=array(

,Hnk_title'=>'ShopNC,,

,Knk_url'=>",'nnk_sort'=>32

);$model->table('link')->where(array(,link_id->37))-

>update($data);〃運用execute方法執(zhí)行更新

Model()->execute('UPDATE'shopnc_goods'SETgoods_click=1000

WHEREgoods_id=2');

插入數(shù)據(jù)

系統(tǒng)可運用insert、insertAll、execute方法完

成插入操作。運用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'));

運用Insert方法執(zhí)行replace操作,將其次個參數(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);

運用insertAll方法:實現(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);

也可以運用execute干脆執(zhí)行SQL語句來插

入數(shù)據(jù)。

刪除數(shù)據(jù)

系統(tǒng)可運用delete、clear、execute方法完

成刪除操作。運用delete方法刪除數(shù)據(jù):

$model=

Model('link');//H

除主鍵為5的記錄

$model->delete(5);

〃或者

$model->where(array('link_id'=>5))-

>delete();

運用clear方法清空數(shù)據(jù):

//清空Hnk表

$model=

ModelQ;

$model->table('link')->clearO;

也可以運用execute干脆執(zhí)行SQL語句來刪

除數(shù)據(jù)。

19/

55

Sinope

3.2.4運算符

系統(tǒng)對常用運算符的運用進行了二次封裝,運用

便利、快捷。gt:大于(>)

egt:大于等于

(>=)It:小于

(<)

elt:小于等于

(<=)eq:等于

(=)neq:不等

于(!=)

notlike:NOT

LIKE

like:同sql中的LIKE

between:同sql中的

BETWEEN[not]in:同

sql中的[NOT]IN

示例:〃為便于演示,這里將全部運算符的運用均排列出

來,以下代碼不行干脆運行$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之間一個或多個

$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,);〃會員昵稱或姓名有

一個含有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)系,即每個條件都須要滿意,假如想滿意一個即可

("OR"關(guān)系),可增加以下條件

$condition['_op']='or';

〃最終將以上條件傳入

where方法

$list=Model(TABLE)->where($condition)->selectO;

3.3視圖

系統(tǒng)采納MVC模式,由視圖類Tpl將變量拋到模板并進行輸出,運用setDir設(shè)置模板

書目,運用。utput方法拋出變量,運用showpage顯示模板,拋出的變量會賦值到模板

的$output數(shù)組中。

Tpl::setDir('home');//指定模板位于templates/default/home

Tpl::output('name','shopnc');//向模板拋出變量

Tpl::showpage('index');//顯示模板

/templates/default/home/index,phpecho

$output['name1;//在模板中運用$output[$var]干脆輸出

3.4調(diào)試

開啟調(diào)試模式可以看到更加具體的系統(tǒng)運行信息,調(diào)試模式的作用在于顯示更多的運行

日志信息,以便在項目開發(fā)過程中快速定位和解決問題。開啟調(diào)試狀態(tài)的效果如下:

21/

55

S/1Q0晨,個

[4]=>F:\root\shopnc_2014\trunk\data\config\config.ini.php

開啟調(diào)試模式須要在中設(shè)置

$config['debug']=true;

3.5緩存

系統(tǒng)可以對數(shù)據(jù)進行多種形式緩存,包括文件方式、共享內(nèi)存方式和數(shù)據(jù)庫方式。目前已

支持的緩存方式包括:、ape、eAccelerator>memcache和xcache,開發(fā)者也可以開

發(fā)更加適合自己的緩存。

系統(tǒng)由Cache緩存類進行緩存操作,由Cache::getlnstance方法完

成緩存類型實例化:〃取得memcache緩存實例

$obj_cache=

Cache::getlnstance('memcache');//

緩存賦值

$obj_cache-

>set('uid',1000);〃讀

取緩存$obj_cache-

>get('uid');//刪除緩存

$obj_cache->rm('uid');

系統(tǒng)須要將部分常用表信息(如基本配置表、商品分類表、快遞表、SEO表等)生成緩

存,為了便于操作,系統(tǒng)對這些表的緩存處理封裝到專有的cache模型中,運用

Modeircache)->call(表名)即可得到符合緩存格式的表信息。

為了便利對緩存的操作,系統(tǒng)新增了H和F方法,H方法對緩存類操作再次進行封

裝。如取得系統(tǒng)cache/setting.php緩存信息:

H('setting');

內(nèi)部執(zhí)行過程為:首先取得file

緩存實例$obj_cache=

Cache::getlnstance('file')

推斷操作類型(刪除緩存?、緩存賦值?緩存讀

?。?,然后執(zhí)行$obj_cache->get(,setting);

取得緩存內(nèi)容,至此執(zhí)行完畢。

22/

55

S/IQPR,

運用H方法將setting表信息生成到文件緩存:

H('setting',true,'file');

內(nèi)部執(zhí)行過程為:首先取得file類型

緩存實例,$obj_cache=

Cache::getlnstance('file')

推斷操作類型(刪除緩存?、緩存賦值?緩存讀

???),然后執(zhí)行$obj_cache->rm('setting);

刪除原有setting緩存,實例化cache模型并執(zhí)行.setting方法來取得

setting表中的內(nèi)容,$list=Model('cache')->call($key);

運用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ù)組、字符串等)生成到文件緩存,在讀取文件緩存時,舉薦運用效率更高

的F方法。

F('setting');〃取得setting緩存

F('setting',$data);〃將$data數(shù)組生成到setting文件緩存

3.6平安

系統(tǒng)為愛護書目與文件平安,在全部敏感的書目中放置一個1字節(jié)的index.html文

件,內(nèi)容為一個空格,以避開當(dāng)服務(wù)器的DirectoryListing打開時,服務(wù)器文件被索

引和列表。

為防止系統(tǒng)內(nèi)文件被非法調(diào)用,系統(tǒng)會在所運用的.php文件頭部增

加有合法性驗證:defined('InShopNC')orexitfAccessInvalid!');

4.函數(shù)與類庫

4.1常量參考

[DS]=>書目分隔符/

[InShopNC]=>合法調(diào)用推

斷標(biāo)記

[StartTime]=>系統(tǒng)起先運行時間(如1350096132.6587)

23/

55

[TIMESTAMP]=>系統(tǒng)當(dāng)前時間(如

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ū)動(mysqli、mysql)

[SESSION_EXPIRE]=>緩存周期,單位

(秒)[LANG_TYPE]=>語言包,默認(rèn)簡

體中文zh_cn[COOKIE.PRE]=>cookie

前綴,系統(tǒ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]=>店鋪證件書目

默認(rèn)upload/auth[ATTACH.MOBILE]=>手機客戶端內(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]=>促

銷活動書目默認(rèn)upload/activity[ATTACH_COUPON]

=>實惠券書目默認(rèn)upload/coupon

[ATTACH_WATERMARK]=>水印圖片書目默認(rèn)

upload/watermark[ATTACH.POINTPROD]=>積分商

品圖片書目upload/pointprod[ATTACH_SPEC]=>

自定義規(guī)格圖片書目默認(rèn)upload/spec

[ATTACH_GROUPBUY]=>團購圖片書目默認(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)自動生成,加密解密時用

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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論