版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育心理學(xué)自我檢測試卷A卷附答案
- 2024年度山西省高校教師資格證之高等教育法規(guī)通關(guān)提分題庫及完整答案
- 2024年合成膠粘劑項目投資申請報告代可行性研究報告
- 2024年私人損害賠償自愿協(xié)議
- 高校食品專業(yè)實驗室安全管理探究
- 新形勢下企業(yè)經(jīng)濟管理創(chuàng)新思路探究
- 2024年商業(yè)樓宇化糞池建造協(xié)議范例
- 2024年加工區(qū)租賃協(xié)議
- 2024年度工程地質(zhì)勘察協(xié)議范本
- 2024屆安徽省安大附中高三下學(xué)期第一次診斷測試數(shù)學(xué)試題
- 湖北省危險廢物監(jiān)管物聯(lián)網(wǎng)系統(tǒng)管理計劃填報說明
- 大學(xué)生就業(yè)指南攻略課件
- 智能算力數(shù)據(jù)中心風(fēng)險評估與應(yīng)對措施
- 八年級數(shù)學(xué)上冊第一學(xué)期期中綜合測試卷(湘教版 2024年秋)
- 公司法教案第四章公司法律制度
- 知道網(wǎng)課智慧《睡眠醫(yī)學(xué)(廣州醫(yī)科大學(xué))》測試答案
- 電氣設(shè)備故障預(yù)測與健康管理分析篇
- 中考語文知識點專題27 名著《紅星照耀中國》知識點
- 門診導(dǎo)診課件
- 河北省衡水中學(xué)2022-2023學(xué)年高一上學(xué)期綜合素質(zhì)檢測二數(shù)學(xué)試題含解析
- 教科版小學(xué)科學(xué)四年級下冊說課稿全套
評論
0/150
提交評論