發(fā)表日期:2019-04 文章編輯:小燈 瀏覽次數(shù):2441
YzmCMS是采用MVC設計模式開發(fā),基于模塊和操作的方式進行訪問,采用單一入口模式進行項目部署和訪問,無論訪問任何一個模塊或者功能,只有一個統(tǒng)一的入口。
如果您在二次開發(fā),建議開啟APP_DEBUG,在根目錄下index.php文件的12行。
..../??????????????根目錄 ..../application???全站應用目錄 ..../cache?????????緩存目錄[必須可寫入] ..../common????????全站公共目錄[必須可寫入] ..../uploads???????默認上傳目錄[必須可寫入] ..../yzmphp????????程序核心目錄[不建議修改] ..../index.php?????程序單一入口文件 ..../.htaccess?????Apache偽靜態(tài)文件[如您不是Apache軟件,可根據(jù)此規(guī)則重寫偽靜態(tài)] ..../nginx.conf????Nginx下偽靜態(tài)文件
application目錄下每一個文件夾都是一個單獨的模塊(module)
每個模塊下都有四個文件夾(common、controller、model、view)一個文件(index.html),這幾個文件時必須有的,新建模塊時也一定要有這幾個文件。
以admin模塊舉例:
application ---admin ------common(模塊公共目錄) ------controller(模塊控制器目錄) ------model(模塊模型目錄) ------view(模塊視圖目錄)
controller目錄中的每一個.php文件都是一個控制器,控制器名稱都以.class.php后綴結尾。
新建一個控制器:test
文件名稱:test.class.php,控制器類的類名稱與控制器文件名必須相同
<?php //這兩行必須要,后臺權限控制 defined('IN_YZMPHP')?or?exit('Access?Denied');? yzm_base?::load_controller('common',?'admin',?0); //這兩行必須要,后臺權限控制 class?test?extends?common?{ //訪問該控制器的該方法的URL: //http://test.yzmcms.com/index.php/admin/test/init public?function?init()?{ echo?'程序默認加載控制器中的init方法'; } //訪問該控制器的該方法的URL: //http://test.yzmcms.com/index.php/admin/test/mytest public?function?mytest()?{ echo?'這個是mytest方法'; } }
URL地址說明:
你的網(wǎng)址/index.php/模塊名稱/控制器名稱/方法名稱
//加載其他控制器 如:yzm_base?::load_controller('common',?'admin',?0); 說明:yzm_base?::load_controller('控制器名稱',?'模塊名稱',?是否初始化); //加載系統(tǒng)類 如yzm_base?::load_sys_class('page','',0); 說明yzm_base?::load_sys_class('類名稱','擴展地址',是否初始化); 如果初始化,返回的是一個類的實例化對象,否則只是加載該類。
本系統(tǒng)中最常用的三種方法:D()方法、 M()方法、 ?U()方法、
D方法
D是data 的首字母,參數(shù)為一個表名稱,返回的是一個數(shù)據(jù)表對象(在YzmCMS3.0以下版本中是M方法)
//實例化一個數(shù)據(jù)表對象,只傳入表名即可,以下所有操作表示在對test表進行操作 $db?=?D('test'); //添加內(nèi)容[成功:返回自動增長的ID,失敗:false] //$db->insert(數(shù)組); //$db->insert(array('name'=>'姓名','sex'=>'男')); //$db->insert(array('name'=>'姓名','sex'=>'男'),?true);?//第二個參數(shù)選填?如果為真值?則開啟實體轉(zhuǎn)義 //刪除內(nèi)容[返回影響行數(shù)] //$db->delete(array('id>'=>'15')); //$db->delete(array(3,4,5),?true);??//第二個參數(shù)存在時,第一個參數(shù)為索引數(shù)組,批量刪除多個 //$db->delete(array('1'=>1));???//刪除所有數(shù)據(jù) //更新內(nèi)容[返回影響行數(shù)] //$db->update(array('name'=>'姓名','sex'=>'男123'),array('id'=>'10')); //$db->update(array('name'=>'姓名','sex'=>'aaa'),array('id'=>'10'),'1');?//第三個參數(shù)選填?如果存在,并為真值?則開啟實體轉(zhuǎn)義 //$db->update('click=click+1',array('id'=>"1"));???????//第一個參數(shù)不是數(shù)組,類似于更新文章點擊數(shù)的功能 //查詢內(nèi)容?select方式[返回二維數(shù)組] //$result?=?$db->select(); //$result?=?$db->field('uname,id')->select(); //$result?=?$db->where(array('name'=>'%php%'))->select();??//like?查詢 //$result?=?$db->join('`yzmcms_admin`?ON?yzmcms_admin.id=yzmcms_admintype.id')->where(array('id'=>'1'))->select();??//join?聯(lián)合查詢 //$result?=?$db->where("typeid?in?(1,2)")->select();?//SQL?:?select?*?from?user?where?typeid?in?(1,2) //$result?=?$db->where(array('name'=>'%php%'))->limit('0,5')->select();?//like?查詢 //$result?=?$db->where(array('name'=>'%php%'))->limit('0,5')->order('id?desc')->select();?//like?查詢 //$result?=?$db->where(array('sex'=>'男'))->limit('0,5')->select(); //$result?=?$db->field('uname,id')->where(array('sex'=>'男'))->limit('0,3')->order('id?desc')->select(); //$result?=?$db->field("sex?,count(sex),avg(height),sum(height)?")->group("sex")->having("?avg(height)?>160")->select(); //$result?=?$db->field("sex?,count(sex)?as?'總個數(shù)',avg(height)?as?'平均身高',sum(height)?as?'總身高'?")->group('sex')->select(); //$result?=?$db->field("sex?,count(sex)?as?'總個數(shù)',avg(height)?as?'平均身高',sum(height)?as?'總身高'?")->group("sex")->having("?平均身高?>160")->select(); //查詢內(nèi)容?find方式[返回一維數(shù)組] //$result?=?$db->find(); //$result?=?$db->field('uname,id')->find(); //$result?=?$db->where("typeid?in?(1,2)")->find();?//SQL?:?select?*?from?user?where?typeid?in?(1,2)?limit?1 //$result?=?$db->field('id,name,height')->where(array('sex'=>'男'))->find(); //$result?=?$db->join('`yzmcms_admin`?ON?yzmcms_admin.id=yzmcms_admintype.id')->where(array('id'=>'1'))->find();??//join?聯(lián)合查詢 //$result?=?$db->field('uname,id')->where(array('sex'=>'男'))->order('id?desc')->find(); //查詢記錄數(shù)[返回記錄行數(shù)] //$result?=?$db->total(); //$result?=?$db->where(array('age>'=>'12'))->total(); //$result?=?$db->join('`yzmcms_admin`?ON?yzmcms_admin.id=yzmcms_admintype.id')->where(array('age>'=>'12'))->total(); //自定義執(zhí)行SQL語句?[yzmcms?代表表前綴] //$db->query("select?*?from?yzmcms_admin");? //獲取一維數(shù)組,一條結果 //$db->fetch_array($db->query("select?*?from?yzmcms_admin")); //獲取二維數(shù)組 //$db->fetch_all($db->query("select?*?from?yzmcms_admin")); //用于調(diào)試程序,輸入最后一條SQL語句 //$db->lastsql();
YzmCMS 3.8版本新增的數(shù)據(jù)庫操作
//?新增?one?方法,用來查詢某個字段的值?[返回值為字符串類型] $res?=?D('admin')->field('rolename')->where(array('adminid'=>1))->one(); P($res);??//運行結果 ?string(15)?"超級管理員" $res?=?D('article')->field('userid')->where(array('id'=>1))->one(); P($res);??//運行結果 ?string(1)?"1" //新增?alias?別名方法,用于給表起別名 $admin?=?D('admin'); $res?= ?$admin->alias('a') ->field('a.adminid,a.adminname,a.rolename,b.address,b.loginip,b.logintime') ->where(array('loginresult'=>1)) ->join('yzmcms_admin_login_log?b?ON?a.adminname=b.adminname',?'left') ->limit(5) ->select(); $admin->lastsql(); //最后生成的SQL為: SELECT?a.adminid,a.adminname,a.rolename,b.address,b.loginip,b.logintime?FROM?yzm_admin?a?LEFT?JOIN?yzm_admin_login_log?b?ON?a.adminname=b.adminname?WHERE?loginresult=1?LIMIT?5 //?注意:?join里的?“yzmcms_”?可表示任意的表前綴,無需修改 //?新增?事務處理 $affair?=?D('affair'); $affair->start_transaction(); //開啟事務 //?模擬業(yè)務流程,執(zhí)行插入和更新操作 $res?=?$affair->insert(array('name'=>'袁志蒙','password'=>'test')); $res2?=?D('test')->update(array('name'=>'yzmcms','password'=>'123456'),?array('id'=>1)); if($res?&&?$res2){ $affair->commit();??//提交事務 }else{ $affair->rollback();??//事務回滾 }
M方法
M是model的首字母,參數(shù)為一個model類名稱,返回的是一個model類對象,意為加載并實例化本模塊下的model類
U方法
U是URL的首字母,返回的是一個URL字符串,意為生成URL地址
//?生成當前模塊下的當前控制器的add方法URL地址 如:U('add');? //?生成當前模塊下的test控制器的add方法URL地址 如:U('test/add')?; //?生成admin模塊下的test控制器的add方法URL地址 如:U('admin/test/add') 說明:U('模塊名稱/控制器名稱/方法名稱') U方法可以有第二個參數(shù),即可傳參 如:U('admin/test/init',array('id'=>1,'status'=>1))和U('admin/test/init','id=1&status=1')是等效的
YzmCMS作者開發(fā)時比較注重代碼簡潔、系統(tǒng)高效等特點,所以您在使用YzmCMS做二次開發(fā)中也應該遵循以下開發(fā)原則:
1.新增功能盡量不要修改系統(tǒng)原文件,建議以模塊插件形式開發(fā)。
2.用戶自定義全局函數(shù)寫到“common/function/extention.func.php”文件中,不影響系統(tǒng)升級。
3.方法名稱和變量名稱都以小寫字符命名。
4.類文件都以小寫字符命名,并以.class.php后綴結尾。
5.所有方法盡可能寫上注釋等。
日期:2019-04 瀏覽次數(shù):3843
日期:2019-04 瀏覽次數(shù):3546
日期:2019-04 瀏覽次數(shù):3664
日期:2019-04 瀏覽次數(shù):4907
日期:2019-04 瀏覽次數(shù):3865
日期:2019-04 瀏覽次數(shù):3706
日期:2019-04 瀏覽次數(shù):3691
日期:2019-04 瀏覽次數(shù):3985
日期:2019-04 瀏覽次數(shù):3717
日期:2019-04 瀏覽次數(shù):3787
日期:2019-04 瀏覽次數(shù):2886
日期:2019-04 瀏覽次數(shù):3072
日期:2019-04 瀏覽次數(shù):4036
日期:2019-04 瀏覽次數(shù):2925
日期:2019-04 瀏覽次數(shù):3092
日期:2019-04 瀏覽次數(shù):2925
日期:2019-04 瀏覽次數(shù):3150
日期:2019-04 瀏覽次數(shù):3062
日期:2019-04 瀏覽次數(shù):2897
日期:2019-04 瀏覽次數(shù):3343
日期:2019-04 瀏覽次數(shù):2876
日期:2019-04 瀏覽次數(shù):3143
日期:2019-04 瀏覽次數(shù):4311
日期:2019-04 瀏覽次數(shù):2739
日期:2019-04 瀏覽次數(shù):2954
日期:2019-04 瀏覽次數(shù):2781
日期:2019-04 瀏覽次數(shù):4079
日期:2019-04 瀏覽次數(shù):2873
日期:2019-04 瀏覽次數(shù):3672
日期:2019-04 瀏覽次數(shù):3582
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.