99久久国产露脸精品麻豆,欧美日韩精品小说,亚洲免费在线美女视频,国产三级中文字幕,91极品国产情侣高潮对白,国产亚洲一区二区三区不卡片,欧美jizz精品欧美性,久久国产精品久久国产片

YzmCMS二次開發手冊

袁志蒙 38793次瀏覽

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

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/admin/test/init
	public function init() {
		echo '程序默認加載控制器中的init方法';
	}
	
	//訪問該控制器的該方法的URL:
	//http://test.yzmcms.com/admin/test/mytest
	public function mytest() {
		echo '這個是mytest方法';
	}
}


URL地址說明:

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


//加載其他控制器
如: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,失?。篺alse]
//$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();

//條件大于寫法
//$res = $db->where(array('id > '=>21))->select();
//同理,不等于或者小于如下
//$res = $db->where(array('id != '=>21))->select();
//P($res);

//查詢內容 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();  //事務回滾
}


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

// insert方法新增第4個參數:replace

// 語法:insert($data, $filter = false, $primary = true, $replace = false)
// $data         要增加的數據,參數為數組
// $filter       是否開啟實體轉義
// $primary 	  是否過濾主鍵
// $replace 	  是否為replace
// 返回值:  成功:返回自動增長的ID,失?。篺alse

$data = array('title'=>'title', 'content'=>'content');
D('test')->insert($data, true);

// 新增批量插入方法:insert_all
// 語法:insert_all($data, $filter = false, $replace = false)
// $data         要增加的數據,參數為二維數組
// $filter       是否開啟實體轉義
// $replace 	 是否為replace

$data = array(
	array('title'=>'title1', 'content'=>'content1'),
	array('title'=>'title2', 'content'=>'content2'),
	array('title'=>'title3', 'content'=>'content3'),
);
$res = D('test')->insert_all($data, true);


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.所有方法盡可能寫上注釋等。


隨機內容

表情

共2條評論
  • 網友評論:

    不錯

    2019-07-13 08:46:56 回復

    點擊加載
  • 網友評論:

    辛苦了,博主

    2017-04-02 19:51:56 回復

    點擊加載