ssh框架php,自研php的仿java的ssh框架

简介

前段时间写javaweb,发现ssh框架里的s标签很好用,但java代码写起来太慢了,入口和配置文件都过于繁琐,而且s标签只有固定的那几种.于是想用php模拟一下javaweb的ssh框架,顺便加些轮子好比文本编辑器,验证码,防xss攻击等进去,减少代码量而又不失可读性.

版权

辽宁工程技术大学新出发点工作室版权所有,项目地址:https://github.com/similing4/php-ssh 转载请注明版权与出处!

框架流程

本框架入口文件为index.php,挪用过程如图:

917755a7a6e1fbe32e16c29c596195c1.png

使用办法

调用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中的S标签

简介:

View内放置的是前台的网页内容,所有资源应放置在res文件夹下供view调用.view输出在index.php入口文件下,因此相对路径便是入口文件所在位置.

View中可以嵌入<?php

主要是为了防止非法拜访问题.

S标签简介

咱们提供了以下标签内容:

另外您可以自界说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中的循环元素.

典范:

对应php语句为foreach($GLOBALS['users'] as $item){ echo "a"; echo $item['user']['uid']; echo "b"; echo $item['user']['username']; echo "c";

如果必要对属性进行遍历则必要如下写法:

对应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类获取

典范:

等价于:if(Test::test(array("test"=>"test","v"=>"a"))) echo $GLOBALS['user']['username']; else

s:css 标签

属性:

src css文件的名字

典范:1

等价于1

s:js 标签

属性:

src js文件的名字

典范:1

等价于1

s:img 标签

属性:

src img文件的带后缀名字(可以加其他参数)

典范:m.logo.png1

等价于logo.png1

自界说标签

S类

简介

S类为自定义s标签插件类.当遇到不认识的s标签时,parse解释器会调用S插件内的以参数命名的办法执行其功能.每要输出一条数据时,index都会调用onText或onParamText两个参数中的一个.如果是普通文本则调用onText否则是s标签生成的就调用另一个.

8a338748f7eacd3769b5b58cf0ed0b69.png

S类办法命名XXX1

这段代码用S类拦截必要定义两个标签:public static function g($param){//时执行的内容,$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文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值