這時(shí)候最好不要在數(shù)據(jù)模型上操作,而是在邏輯模型上操作。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括東西湖網(wǎng)站建設(shè)、東西湖網(wǎng)站制作、東西湖網(wǎng)頁制作以及東西湖網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,東西湖網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到東西湖省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
也就是說,數(shù)據(jù)模型(Data Model)任然是一個(gè)模型對應(yīng)一張表。而在數(shù)據(jù)模型和控制器間,再插入一個(gè)邏輯模型(Logic Model),通過邏輯模型(邏輯模型操作多個(gè)數(shù)據(jù)模型)完成一些邏輯操作(如下單等等)。
這樣能保證整體架構(gòu)的清晰。
國內(nèi)的php后臺(tái)管理系統(tǒng)應(yīng)該主要就是基于thinkphp開發(fā)的,其中有thinkcms,F(xiàn)astAdmin,TP6-Admin基于微信管理后臺(tái)的MoChat。
這些都是比較新的php管理系統(tǒng),還有基于laravel的管理系統(tǒng)laravel-admin。
【1】創(chuàng)建模塊目錄
通過前面的學(xué)習(xí),我們已經(jīng)知道phpcms V9框架中的模塊位于phcms/modules目錄中,每一個(gè)目錄稱之為一個(gè)模塊。
如果要?jiǎng)?chuàng)建一個(gè)模塊,只要在 phpcms/modules 目錄下創(chuàng)建文件夾并放入你的控制器類就可以了。
例如我要開發(fā)一個(gè)叫做test的模塊,那么首先在 phpcms/modules 目錄下創(chuàng)建文件夾,并將其命名為test。
觀察其他模塊的結(jié)構(gòu),可知test模塊的標(biāo)準(zhǔn)結(jié)構(gòu)通常應(yīng)該也是這樣的:
classes 為模塊類庫包
functions 為模塊函數(shù)庫包
templates 為模塊模板包,通常放置含有權(quán)限控制的控制器模板,也就是后臺(tái)模板。
如果你的模板有自定義的前臺(tái)模板,你需要在phpcms\templates\default目錄下創(chuàng)建一個(gè)你的模塊名目錄來放置前臺(tái)模板,“default”為你的風(fēng)格包名稱,我們默認(rèn)是用default。
【2】創(chuàng)建模塊控制器類
上一步,我們已經(jīng)創(chuàng)建好了一個(gè)名為test的模塊,接下來我們繼續(xù)為這個(gè)模塊添加兩個(gè)控制器類。
phpcms V9 的控制器就是模塊的類文件,位于phpcms/modules/模塊名/目錄下面。類文件名稱就是控制器名+.php,例如一個(gè)名為mytest的控制器,那么它的命名為mytest.php即可。控制器類默認(rèn)繼承系統(tǒng)的函數(shù)庫,可以直接使用。
控制器類的類名稱與控制器文件名必須相同。
控制器類文件包含兩種形式:
1.前臺(tái)瀏覽(不含權(quán)限控制),mytest.php 控制器
在phpcms/modules/test 目錄下,新建文本文件,命名為mytest,修改文件類型為php, 用Notepad++打開編輯內(nèi)容為:
1 ?php
2 defined('IN_PHPCMS') or exit('No permission resources.');
3 class mytest
4 {
5 function __construct(){}
6 public function init()
7 {
8 $myvar = 'hello world!';
9 echo $myvar;
10 }
11 public function mylist()
12 {
13 $myvar = 'hello world! This is an example!';
14 echo $myvar;
15 }
16 }
17 ?
其實(shí),這個(gè)控制器的URL訪問方法前面已經(jīng)介紹過,請參見《phpcms V9 MVC模式與URL訪問解析》
;c=mytest等價(jià)于
;c=mytesta=init。
沒有填寫“a”值的情況下,默認(rèn)調(diào)用init方法。
為什么這樣子?請把《phpcms V9 MVC模式與URL訪問解析》再讀一遍。
2.后臺(tái)管理(含權(quán)限控制),mytest_admin.php 控制器
后臺(tái)控制器需要加載admin模塊下的admin類,并繼承該類。需要注意的是因?yàn)樘砑拥目刂破黝惱^承了其它的類,要小心控制器類的方法名不要和該類中的方法名一樣了,否則會(huì)造成影響,具體請查看admin類中有哪些方法。
在phpcms/modules/test 目錄下,新建文本文件,命名為mytest_admin,修改文件類型為php, 用Notepad++打開編輯內(nèi)容為:
1 ?php
2 defined('IN_PHPCMS') or exit('No permission resources.');
3 pc_base::load_app_class('admin','admin',0);
4 class mytest_admin extends admin
5 {
6 public function __construct() {}
7 public function init()
8 {
9 $myvar = 'oh,i am phpcmser';
10 echo $myvar;
11 }
12 }
13 ?
在控制器中增加模板調(diào)用
phpcms 可以實(shí)現(xiàn)完全的模板與程序分離,所以在我們的控制器程序中要加載模板,才可以更友好的顯示出來。
1.加載前臺(tái)模板
前臺(tái)模板文件在phpcms\templates\default\模塊名稱的目錄中,本示例也就在phpcms\templates\default\test中。
加載模板方法如下:
1 // 加載模板方法:
2 include template('test', 'mytest', 'default');
其中,test為模塊名稱,mytest為模板目錄下模板名稱,default為風(fēng)格名稱,默認(rèn)為default。
在上面例子中如果要給mytest.php中init方法加載一個(gè)mytest的模板(可以拷貝content模塊下的index.html作為替代),如下(所以模板名稱為index):
1 public function init()
2 {
3 $myvar = 'hello world!';
4 echo $myvar;
5 include template('test', 'index');
6 }
這時(shí),當(dāng)我們再通過URL訪問該方法的時(shí)候也就加載了對應(yīng)的模板。
2.加載后臺(tái)模板
后臺(tái)模板文件在phpcms\modules\模塊名稱\templates 目錄中,本示例也就在phpcms\modules\test\templates中
加載模板方法如下:
// 加載模板方法:
include $this-admin_tpl('mytest_admin_list');
其中mytest_admin_list為phpcms\modules\test\templates中mytest_admin_list.tpl.php。
注意:此處模板必須以.tpl.php 作為后綴
在上面例子中如果要給mytest_admin.php中init方法加載一個(gè)mytest_admin_list的模板,如下:
1 public function init()
2 {
3 $myvar = 'oh,i am phpcmser';
4 echo $myvar;
5 include $this-admin_tpl('mytest_admin_list');
6 }
加載模板部分內(nèi)容也可以參見系統(tǒng)框架源碼content模塊 phpcms\modules\content content.php文件的實(shí)現(xiàn)。
【3】創(chuàng)建數(shù)據(jù)庫模型類
至此,已經(jīng)明確,各模塊的數(shù)據(jù)庫模型位于:phpcms/model/ 目錄下。
數(shù)據(jù)模型文件的命名規(guī)則建議為:數(shù)據(jù)表名稱 + '_model.class.php'
如果在我們的創(chuàng)建的模塊中我要使用一個(gè)數(shù)據(jù)庫“test”,首先需要建立一個(gè)數(shù)據(jù)庫模型文件,文件名稱為'test_model.class.php'
內(nèi)容如下:
1 ?php
2 defined('IN_PHPCMS') or exit('No permission resources.');
3 pc_base::load_sys_class('model', '', 0);
4 class test_model extends model
5 {
6 public function __construct()
7 {
8 $this-db_config = pc_base::load_config('database');
9 $this-db_setting = 'default';
10 $this-table_name = 'test';
11 parent::__construct();
12 }
13 }
14 ?
書寫數(shù)據(jù)庫模型類注意一下幾點(diǎn):
1. 數(shù)據(jù)庫模型類名稱必須與文件名稱相同。
2. 必須繼承與數(shù)據(jù)庫模型基類model。
3. $this-db_setting = 'default'為數(shù)據(jù)庫配置文件中配置數(shù)據(jù)庫鏈接池名稱,默認(rèn)為default,一般情況下不需要修改。
4. $this-table_name = 'test'為數(shù)據(jù)表名稱。
這樣我們就建立好一個(gè)數(shù)據(jù)庫模型類。那么,怎么使用呢?
在模塊的控制器中使用(加載方式):
$this-db = pc_base::load_model('test_model');
具體如下:
1 ?php
2 defined('IN_PHPCMS') or exit('No permission resources.');
3 class mytest
4 {
5 private $db;
6 function __construct()
7 {
8 $this-db = pc_base::load_model('test_model'); // 加載數(shù)據(jù)庫模型
9 }
10 public function init()
11 {
12 $myvar = 'hello world!';
13 echo $myvar;
14 include template('test', 'index');
15 $result = $this-db-select(); // 調(diào)用select方法
16 var_dump($result);
17 }
18 public function mylist()
19 {
20 $myvar = 'hello world! This is an example!';
21 echo $myvar;
22 }
23 }
24 ?
其中$this-db中所支持的方法請參照父類 phpcms/libs/classes/model.class.php 中方法。
推薦位調(diào)用自定義字段
在模型里加好自定義字段后,必須把“在推薦位標(biāo)簽中調(diào)用”點(diǎn)擊“是“
然后用同一樣的方法去調(diào)節(jié)數(shù)據(jù)就OK了,記住,如果你加了文章,必須去更新文章才會(huì)顯示,自定義段在推薦中只顯示你選擇后,選擇前加的加文章不顯示,更新一下文章就顯示了!
當(dāng)前名稱:php7后端數(shù)據(jù)模型 php后端接口怎么寫
URL分享:http://jinyejixie.com/article36/dosgpsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)、微信小程序、用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)