日本一区二区三区欧美国产_日韩免费高清一级毛片在线_日本丰满爆乳在线观看_91尤物国产福利在线观看视_精品欧美在线观看自拍_日韩精品电影一区亚洲_无码专区蜜乱码_亚洲欧美精品免费_人像艺术摄影_国产综合免费网站网址

濟南小程序開發(fā)公司濟南小貓科技:專注微信開發(fā),濟南小程序開發(fā),濟南微信小程序定制開發(fā)等業(yè)務!
手機版手機網(wǎng)站二維碼 微信版 微信二維碼 業(yè)務咨詢電話:159-5318-4521

小程序開發(fā)者:插件機制與目錄結(jié)構(gòu)

發(fā)表于:2021-05-24 10:20:27 閱讀(0 )

為更好的拓展系統(tǒng)功能,進云框架支持以插件的形式開發(fā)應用。下面簡要介紹進云系統(tǒng)插件機制。

插件可以擁有自己的頁面、數(shù)據(jù)表、工具類等。進云系統(tǒng)已內(nèi)置插件類plugin,每一個插件類都是該類的實例,在插件控制文件中,可通過$this來訪問該插件的屬性和方法。

 

頁面機制

和其他PHP框架不同,進云插件頁面控制文件無需聲明類。而是直接在特定目錄創(chuàng)建文件以編寫業(yè)務代碼即可!但是進云插件所有頁面都處于plugin類中,也就是在所有頁面控制文件中都可以使用$this來訪問相應插件類實例的方法和屬性!

進云系統(tǒng)是一個多站點的站點管理系統(tǒng),每個站點都有管理端和客戶端,管理端是站點管理員登陸操作管理的頁面,客戶端是站點建好對外發(fā)布后,訪客訪問的頁面。為提升系統(tǒng)安全性,管理端頁面代碼和客戶端頁面代碼分開存放,分別位于插件根目錄下的manage文件夾和custom文件夾。

進云系統(tǒng)中,每個頁面對應一個頁面控制文件(PHP文件)、一個頁面樣式文件(html文件),分別存放于指定位置,可查看下面面的目錄結(jié)構(gòu)。每個頁面可分為若干個子頁面,根據(jù)op來區(qū)分。

進云系統(tǒng)的插件目錄是根目錄下的addons目錄,插件的根目錄位于系統(tǒng)插件目錄下以插件標識命名的文件夾。

插件目錄:

插件根目錄

——manage:插件管理端頁面文件目錄

; ; ; ;|——common.php:管理端初始化文件,非必須。如果存在,訪問插件用戶端頁面時,會先執(zhí)行該頁面的代碼,該文件中可通過$this訪問插件類

; ; ; |——actions:控制文件目錄

; ; ; ; ; ; ; ;|——index.php:插件管理端首頁

; ; ; ; ; ; ; ;|——link.php:插件頁面鏈接選擇文件

; ; ; |——templates:頁面文件目錄

; ; ; ; ; ; ; ;|——windows:PC端頁面文件

; ; ; ; ; ; ; ;|——mobile:手機端頁面文件

——resource:插件圖片、樣式、js等資源文件目錄

——custom:插件用戶端頁面文件目錄

; ; ; ;|——common.php:用戶端初始化文件,,非必須。如果存在,訪問插件用戶端頁面時,會先執(zhí)行該頁面的代碼,該文件中可通過$this訪問插件類

; ; ; ;|——actions:控制文件目錄

; ; ; ;|——templates:頁面文件目錄

——class:插件工具類目錄

——subscribe:插件訂閱事件處理函數(shù)目錄

——model:插件工具類目錄

; ; ; ;|——menu.php:插件管理端導航菜單聲明文件,非必須

——init.php:插件類初始化文件,非必須。

——default_setting.php:插件默認參數(shù)聲明文件,非必須。

 

一個典型的進云插件頁面:

頁面地址:http://你的域名/manage/index.php?plugin=jy_weishop&action=goods.list

頁面控制文件路徑:(相對插件根目錄)
/manage/actions/goods/list.php

控制文件中,可以使用$this來方法插件類的方法和屬性。整理好數(shù)據(jù)后,調(diào)用系統(tǒng)exi函數(shù)返回前端

頁面pc端html文件路徑:(相對插件根目錄)
/manage/templates/windows/goods/list.html

頁面手機端html文件路徑:(相對插件根目錄)
/manage/templates/mobile/goods/list.html

控制文件通過訪問數(shù)據(jù)庫將數(shù)據(jù)讀出并整理好,然后通過調(diào)用exi()函數(shù)將數(shù)據(jù)返回給前端,系統(tǒng)自動調(diào)用相應html文件結(jié)合數(shù)據(jù)進行渲染,生成最終的展示頁面

插件數(shù)據(jù)表名稱命名規(guī)范:

為方便使用和統(tǒng)一管理,所有進云插件的數(shù)據(jù)表必須以(系統(tǒng)數(shù)據(jù)表前綴+插件標識+下劃線)開頭!

插件工具類聲明和使用方法:

為方便model()函數(shù)調(diào)用,插件工具類必須全部聲明在class文件夾中,然后按照標準的格式進行聲明?。ó斎?,如果是自己直接使用,隨便怎么聲明都可以!此處規(guī)范的類聲明方式只是為了model函數(shù)能夠調(diào)用到!)

下面介紹聲明方法:

1、命名空間:plugin_name

2、類名: class_name

3、繼承的基類:plugin。繼承這個類的目的是在工具類中可以使用插件類的方法和屬性!如果無需用到這些,也可不繼承!

4、本插件調(diào)用方法:$this->model('class_name'),返回已實例化好的目標類的示例

5、外部插件調(diào)用方法:model('plugin_name/class_name'),返回已實例化好的目標類的示例

5、類比較多時,可在class目錄下創(chuàng)建一級或多級文件夾,以更好的管理這些類,這些類的命名空間和調(diào)用方法如下:

命名空間:plugin_namedir_name

類名:class_name

調(diào)用方法:model('
plugin_name/dir_name/class_name')

多級文件夾以此類推!

下面是示例代碼:

以下為微客分銷插件傭金計算類的聲明代碼

文件路徑:
/addons/jy_commission/class/commission.php(基于站點根目錄)

<?php
namespace jy_commission;
defined('BY_JYA'or exit('error');
/*
	分銷傭金
	
*/
class commission extends plugin{
	/*
		生成傭金
	*/
	function create($order){
		$level=intval($this->setting['level']);
		if($level==0){
			return;
		}
		$this->order=$order;
		if($this->setting['self_commission']==1){
			$agent_id=$order['mid'];
		}else{
			$agent_id=$this->getcolumn('member',array('mid'=>$order['mid']),'agent_id');
		}
		$this->commission_order=array(
			'uniacid'=>$_SESSION['uniacid'],
			'mid'=>$this->order['mid'],
			'ordersn'=>$this->order['ordersn'],
			'order_price'=>$this->order['price'],
			'commission_money'=>0,
			'createtime'=>TIMESTAMP,
		);
		//傭金計算方式,是否扣除運費
		if($this->setting['commissiontype']==1){
			$this->commission_order['commission_price']=$this->order['price'];
		}else{
			$this->commission_order['commission_price']=$this->order['price']-$this->order['dispatchprice'];
		}
		//當分銷層級大于0時,逐次尋找上級推薦人并計算傭金
		for($i=0;$i<$level;$i++){
			if(!$agent_id){
				break;
			}
			$agent_id=$this->create_commission($agent_id,$i+1);
		}
		//生成分銷訂單
		$this->insert('order',$this->commission_order);
		return true;
	}
	//以下部分省略
}



top