《自研php的仿java的ssh框架》要點:
本文介紹了自研php的仿java的ssh框架,希望對您有用。如果有疑問,可以聯系我們。
前段時間寫javaweb,發現ssh框架里的s標簽很好用,但java代碼寫起來太慢了,入口和配置文件都過于繁瑣,而且s標簽只有固定的那幾種.于是想用php模擬一下javaweb的ssh框架,順便加些輪子好比文本編輯器,驗證碼,防xss攻擊等進去,減少代碼量而又不失可讀性.
遼寧工程技術大學新出發點工作室版權所有,項目地址:https://github.com/similing4/php-ssh 轉載請注明版權與出處!
本框架入口文件為index.php,挪用過程如圖:
調用mod:
index.php?mod=Mod名稱
Mod文件格式:放在Mod文件夾下,文件名要求年夜寫并能表名Mod功能
<?php
挪用Action
Controller::doAction(“Action類名”,”Action辦法名”,封裝后的參數);
Controller.php?action=Action類名&method=Action辦法名
注:調用Action限定只在mod或URL中調用,您可以將URL調用關閉,關閉辦法:將Controller.php中
if(isset($_GET['action'])&&isset($_GET['method'])){
段注釋失落
Action文件格式:Action是一個靜態類,類名要求規則與Mod相同.不外Action要求放在Action文件夾下且Action名與類名要求一致:
<?php
挪用Service
Controller::doService(“Service類名”,”Service辦法名”,封裝后的參數);
注:挪用Service限定只在Action中挪用
Service文件格式:Service同Action一樣也是一個靜態類,類名要求規則與Action相同.不外Service要求放在Service文件夾下:
<?php
DB類
本類主要用于挪用數據庫.
在Dao文件夾中創建任意DaoObj類,命名要求與Action相同(同Java,類名需與文件名一致),便利在Service中import(“Dao.”.類名);調用.
調用辦法:
import("Dao.類名");
DaoObj定義類布局如下:
<?php
DB類使用辦法如下
DB類設置
屬性:
host=”localhost”;name=”數據庫用戶”;
pass=”數據庫暗碼”;table=”數據庫名”;
$ut=’utf8’;
query($sql);
參數:
sql要執行的語句返回值:當sql為查詢時,返回值可被用于this->db->fetch_array()的參數,不然返回是否成功.
提醒:
除該辦法需對參數進行防注入處理外其余增刪改查辦法已對單引號替換,不需要防注入.
fetch_array($query);
參數:
querythis->db->query($sql)的返回值
返回值:
如果查詢結果為空或全部查完了返回false,不然返回查詢的一行數據.
使用辦法:
$sql="select * from users"; $query=$this->db->query($sql); while($row=$this->db->fetch_array($query)){ //...這里寫處置
select_arr(name,req = array(),$like=false);
參數:
name表名req 前提數組
$like 前提是否用like
返回值:
返回查詢成果數組.
使用辦法:
$result=$this->db->select_arr("users"); foreach($result as $row){ //這里寫處置,$row為每一行的數據,如$row['username']為改行username列的值.
select_first(name,req);
參數:
name表名req 前提數組
返回值:
返回查詢成果的第一條,沒有則返回false.
使用辦法:
$result=$this->db->select_first("users",array( "uid"=>1
update(table,list,$tiao);
參數:
table表名list 要變動的值
$tiao 前提數組
返回值:
query成果
使用辦法:
$this->db->update("users",array( "password"=>md5("admin")
fn_del(table,c);
參數:
table表名c 前提數組
返回值:
query成果
使用辦法:
$this->db->fn_del("users",array( "uid"=>1
fn_insert(table,name,$arr);
參數:
table表名name 插入數據列名(可以根據該參數進行排序,如果沒有可以填寫”“,必要則按數組順序填寫元素,如array(“uid”,”username”))
$arr 插入行的數據
返回值:
query成果
使用辦法:
$this->db->fn_insert("users","",array( "null", "admin", "adminp"
affected_rows();
返回值:影響行數
insert_id();
返回值:AUTO_INCREASE列插入的id
簡介:
View內放置的是前臺的網頁內容,所有資源應放置在res文件夾下供view調用.view輸出在index.php入口文件下,因此相對路徑便是入口文件所在位置.
View中可以嵌入
<?php
主要是為了防止非法拜訪問題.
S標簽簡介
咱們提供了以下標簽內容:
<s:iterator value="arr">
另外您可以自界說s標簽,詳見plugins下的S類.
解析類詳見kernel下的ParseS類.
功效介紹
s:iterator 標簽
屬性:
value 對應全局變量GLOBALS內的指定值,要求獲取的值是php的Array類型以用于遍歷.典范:value=”user.uid”對應GLOBALS[‘user’][‘uid’];
您也可獲取session中的內容,獲取辦法:value=”session.username”
s:property 標簽
屬性:
value 同s:iterator的value,不外要求獲取的值是php的字符串或數字等可直接輸出的類型.
典范:value=”user.uid” 對應 $GLOBALS[‘user’][‘uid’];
type 指定為item時,必需與s:iterator搭配,表示該iterator中的循環元素.
典范:
<s:iterator value="users">
對應php語句為
foreach($GLOBALS['users'] as $item){ echo "a"; echo $item['user']['uid']; echo "b"; echo $item['user']['username']; echo "c";
如果必要對屬性進行遍歷則必要如下寫法:
<s:iterator value="pro">
對應php語句為
foreach($GLOBALS['pro'] as $sheng=>$shi){ echo $sheng; echo "=>"; echo $shi;//當property的value為空時其值為為當前遍歷key=>value里的value.
s:if 標簽
屬性:
test 調用Test.php中Test類的靜態辦法,其它屬性值作為參數傳入(不能在屬性中嵌入s標簽),當前運行狀態可以通過kernel.HookParse類獲取
典范:
<s:if test="test" v="a">
等價于:
if(Test::test(array("test"=>"test","v"=>"a"))) echo $GLOBALS['user']['username']; else
s:css 標簽
屬性:
src css文件的名字
典范:
<s:css src="m.index" />1
等價于
<link href="assests/css/m/index.css" rel="stylesheet" type="text/css" />1
s:js 標簽
屬性:
src js文件的名字
典范:
<s:js src="m.index" />1
等價于
<script src="assests/m/index.js" type="text/javascript" />1
s:img 標簽
屬性:
src img文件的帶后綴名字(可以加其他參數)
典范:
<s:img src="m.logo.png" width="100%"/>1
等價于
<img src="assests/images/m/logo.png" width="100%" />1
自界說標簽
S類
簡介
S類為自定義s標簽插件類.當遇到不認識的s標簽時,parse解釋器會調用S插件內的以參數命名的辦法執行其功能.每要輸出一條數據時,index都會調用onText或onParamText兩個參數中的一個.如果是普通文本則調用onText否則是s標簽生成的就調用另一個.
S類辦法命名
<s:g a="b">XXX</s:g>1
這段代碼用S類攔截必要定義兩個標簽:
public static function g($param){//<s:g>時執行的內容,$param是屬性鍵值對的array
如果必要對內部的內容進行控制,則必要在onText內對文本進行處理.您可以通過設置靜態變量標志判斷該text是不是標簽內的內容.如果必要對內容內的標簽進行處理,請使用kernel.HookParse類
預界說的s標簽
我們曾經預寫了一些s標簽,如:
s:checkcode標簽用于顯示驗證碼
驗證碼類:Service.model.ValidateCode
服務:Service.CheckCodeService
需要驗證驗證碼可以使用Controller::doService(“CheckCodeService”,”checkCode”,驗證碼);辦法.返回真偽值表示驗證碼是否正確.
s:jquery、s:tether、s:bootstrap、s:ueditor標簽用于援用各前端js與css文件
《自研php的仿java的ssh框架》是否對您有啟發,歡迎查看更多與《自研php的仿java的ssh框架》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9361.html