<address id="r9vd9"><address id="r9vd9"><listing id="r9vd9"></listing></address></address>

      歡迎您光臨深圳塔燈網絡科技有限公司!
      電話圖標 余先生:13699882642

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

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

      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.webpost.com.cn/18742.html
      相關cms文章
        SQL執行錯誤,請檢查国产成人精品综合在线观看