shiogong / gate
GateSystem
dev-master
2018-01-24 02:52 UTC
Requires
- php: >=5.6.0
- ext-gd: *
- shiogong/storage-drive: dev-master
This package is not auto-updated.
Last update: 2025-06-22 08:54:39 UTC
README
本组件包含多票据的诸多处理策略,支持自定义扩展
安装
composer install shiogong/gate
用例
初始化
// 入门票据基础类(用户输入的数据,存入相应的位置中)
$requestBean = new GateRequestBean();
// 票据关键值
$requestBean->setKeyValue($openId);
// 票据类型
$requestBean->setTicketType(UserToken::USER_TOKEN_TYPE_MINIPROGRAM);
// 票据存储的数据库model
$tokenModel = new UserToken();
// 票据的操作类
$ticketObj = new GateTicketOpenId($requestBean, $tokenModel);
// 初始化
$gate = new Gate($ticketObj);
设置数据Model
记得你是需要实现一个数据Model的,这个Model必须实现TicketModelInf接口
授权认证
// 授权认证
$ticket = $gate->authentication();
票据动作(系统预设)
票据动作就是一些相关票据的标准业务模式
创建票据
$action = new TicketCreate();
$gate->action($action);
扩展
扩展票据类型
你可能需要创建系统中不包括的票据类型,比如邮箱,用户名等.
1.继承抽象类GateTicketAbs
任意类继承抽象类GateTicketAbs,这个类是票据的基础类,任何票据都必须是这个抽象类的衍生类
强制实现方法
继承之后,有几个需要强制实现的方法,这些方法与你的票据息息相关,这几个方法必须实现,并且做出相应的设置,isAuthenticateSuccess这个方法的返回值尤为重要,如果他返回true,直接视为此票据授权成功
/**
* 是否需要密码
* @return boolean
*/
abstract public function isNeedPassword();
/**
* 认证流程
* @return mixed
*/
abstract public function authentication();
/**
* 是否授权成功
* @return boolean
*/
abstract public function isAuthenticateSuccess();
/**
* 外部直接设置授权是否成功
* @param bool $isAuthenticateSuccess
*/
abstract public function setIsAuthenticateSuccess($isAuthenticateSuccess);
/**
* 得到票据类型
* @return int
*/
abstract public function getTicketType();
/**
* 外部直接设置票据类型
* @param null $ticketType
*/
public abstract function setTicketType($ticketType);
/**
* 检查其他票据是否存在
* @return mixed
*/
abstract public function checkOtherTicketExist();
便利的上下文方法
该类还有几个专门获取上下文的方法
/**
* 得到TokenModel
* @return mixed
*/
function getModel();
/**
* 得到从数据库中匹配的数据
* @return mixed
*/
function getMatchingTicketData();
/**
* 得到输入的数据
* @return mixed
*/
function getRequestBeanData();
预设的验证或工具方法
抽象类实现了几个核心流程方法,如果他们的验证方式不符合你的预期,你可以通过覆写的方式解决这个问题
/**
* 匹配票据数据
* @return mixed
*/
function matchingTicket();
/**
* 检查输入的数据是否存在于model中
* @return mixed
*/
function checkBasisDataExist();