• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網絡科技有限公司!
    電話圖標 余先生:13699882642

    YzmCMS二次開發手冊_YzmCMS官方網站

    發表日期:2019-04 文章編輯:小燈 瀏覽次數:2609

    YzmCMS是采用MVC設計模式開發,基于模塊和操作的方式進行訪問,采用單一入口模式進行項目部署和訪問,無論訪問任何一個模塊或者功能,只有一個統一的入口。

    如果您在二次開發,建議開啟APP_DEBUG,在根目錄下index.php文件的12行。

    一、基本目錄結構

    ..../??????????????根目錄
    ..../application???全站應用目錄
    ..../cache?????????緩存目錄[必須可寫入]
    ..../common????????全站公共目錄[必須可寫入]
    ..../uploads???????默認上傳目錄[必須可寫入]
    ..../yzmphp????????程序核心目錄[不建議修改]
    ..../index.php?????程序單一入口文件
    ..../.htaccess?????Apache偽靜態文件[如您不是Apache軟件,可根據此規則重寫偽靜態]
    ..../nginx.conf????Nginx下偽靜態文件


    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地址說明:

    你的網址/index.php/模塊名稱/控制器名稱/方法名稱


    //加載其他控制器
    如:yzm_base?::load_controller('common',?'admin',?0);
    說明:yzm_base?::load_controller('控制器名稱',?'模塊名稱',?是否初始化);
    //加載系統類
    如yzm_base?::load_sys_class('page','',0);
    說明yzm_base?::load_sys_class('類名稱','擴展地址',是否初始化);
    如果初始化,返回的是一個類的實例化對象,否則只是加載該類。


    三、常見方法說明

    本系統中最常用的三種方法:D()方法、 M()方法、 ?U()方法、


    D方法

    D是data 的首字母,參數為一個表名稱,返回的是一個數據表對象(在YzmCMS3.0以下版本中是M方法)


    //實例化一個數據表對象,只傳入表名即可,以下所有操作表示在對test表進行操作
    $db?=?D('test');
    
    //添加內容[成功:返回自動增長的ID,失敗:false]
    //$db->insert(數組);
    //$db->insert(array('name'=>'姓名','sex'=>'男'));
    //$db->insert(array('name'=>'姓名','sex'=>'男'),?true);?//第二個參數選填?如果為真值?則開啟實體轉義
    
    
    //刪除內容[返回影響行數]
    //$db->delete(array('id>'=>'15'));
    //$db->delete(array(3,4,5),?true);??//第二個參數存在時,第一個參數為索引數組,批量刪除多個
    //$db->delete(array('1'=>1));???//刪除所有數據
    
    //更新內容[返回影響行數]
    //$db->update(array('name'=>'姓名','sex'=>'男123'),array('id'=>'10'));
    //$db->update(array('name'=>'姓名','sex'=>'aaa'),array('id'=>'10'),'1');?//第三個參數選填?如果存在,并為真值?則開啟實體轉義
    //$db->update('click=click+1',array('id'=>"1"));???????//第一個參數不是數組,類似于更新文章點擊數的功能
    
    
    //查詢內容?select方式[返回二維數組]
    
    //$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?聯合查詢
    //$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?'總個數',avg(height)?as?'平均身高',sum(height)?as?'總身高'?")->group('sex')->select();
    //$result?=?$db->field("sex?,count(sex)?as?'總個數',avg(height)?as?'平均身高',sum(height)?as?'總身高'?")->group("sex")->having("?平均身高?>160")->select();
    
    //查詢內容?find方式[返回一維數組]
    //$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?聯合查詢
    //$result?=?$db->field('uname,id')->where(array('sex'=>'男'))->order('id?desc')->find();
    
    //查詢記錄數[返回記錄行數]
    //$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();
    
    
    
    //自定義執行SQL語句?[yzmcms?代表表前綴]
    //$db->query("select?*?from?yzmcms_admin");?
    //獲取一維數組,一條結果
    //$db->fetch_array($db->query("select?*?from?yzmcms_admin"));
    //獲取二維數組
    //$db->fetch_all($db->query("select?*?from?yzmcms_admin"));
    
    //用于調試程序,輸入最后一條SQL語句
    //$db->lastsql();


    YzmCMS 3.8版本新增的數據庫操作

    //?新增?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();	//開啟事務
    
    //?模擬業務流程,執行插入和更新操作
    $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的首字母,參數為一個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方法可以有第二個參數,即可傳參
    如:U('admin/test/init',array('id'=>1,'status'=>1))和U('admin/test/init','id=1&status=1')是等效的

    四、二次開發原則

    YzmCMS作者開發時比較注重代碼簡潔、系統高效等特點,所以您在使用YzmCMS做二次開發中也應該遵循以下開發原則:

    1.新增功能盡量不要修改系統原文件,建議以模塊插件形式開發。

    2.用戶自定義全局函數寫到“common/function/extention.func.php”文件中,不影響系統升級。

    3.方法名稱和變量名稱都以小寫字符命名。

    4.類文件都以小寫字符命名,并以.class.php后綴結尾。

    5.所有方法盡可能寫上注釋等。



    本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶參考了本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.juherenli.com/18742.html
    相關cms文章
     八年  行業經驗

    多一份參考,總有益處

    聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

    咨詢相關問題或預約面談,可以通過以下方式與我們聯系

    業務熱線:余經理:13699882642

    Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

    国产成人精品日本亚洲专| 精品国产综合区久久久久久| 久久精品一区二区三区日韩| 国产成人精品一区二区三在线观看| 992tv精品视频tv在线观看| 视频一区精品自拍| 精品小视频在线观看| 亚洲熟妇成人精品一区| 2021最新国产成人精品视频| 亚洲高清专区日韩精品 | 久草热久草热线频97精品| 国产日产欧产精品精品浪潮| 在线观看日韩精品| 久久精品一区二区国产| 久久久久久亚洲精品不卡| 精品视频在线观看一区二区三区| 亚洲欧美国产精品专区久久| 中文字幕精品1在线| 国产精品自拍亚洲| 亚洲日韩精品国产一区二区三区 | 国产精品户外野外| 国产免费久久精品| 国产精品日本亚洲777| 99偷拍视频精品一区二区| 亚洲日韩精品国产一区二区三区| 1卡二卡三卡四卡精品| 99国产精品视频久久久久| 久久精品一区二区免费看| 柠檬福利精品视频导航| 亚洲精品色午夜无码专区日韩| 996久久国产精品线观看| 久久精品免费一区二区喷潮| 香蕉久久夜色精品国产尤物| 国产精品久久亚洲不卡动漫| 久久精品国产日本波多野结衣| 99精品国产一区二区三区不卡| 久久久精品2019中文字幕之3| 久久久久成人精品一区二区| 久久亚洲精品成人| 99热成人精品国产免国语的 | 日韩欧美亚洲国产精品字幕久久久|