oop - php如何通过面向对象实现审核过程(多级审核)
迷茫
迷茫 2017-04-11 10:28:52
[PHP讨论组]

要求是用php的oop编程,赶脚无从下手,请php大神给出思路和一些伪代码,或者可以用一些设计模式,不胜感激

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(5)
PHPz

责任链模式
https://github.com/TIGERB/easy-tips/blob/master/patterns/chainOfResponsibility/test.php

PHP中文网

不知道是不是这个 。我抄 @TIGERB 的

<?php
/**
 * 行为型模式
 *
 * php责任链模式
 * 理解:把一个对象传递到一个对象链上,直到有对象处理这个对象
 * 可以干什么:我们可以做一个filter,或者gateway
 *
 *
 * @author  TIGERB <https://github.com/TIGERB>
 * @example 运行 php test.php
 */
// 注册自加载
spl_autoload_register('autoload');
function autoload($class)
{
  require dirname($_SERVER['SCRIPT_FILENAME']) . '//..//' . str_replace('\\', '/', $class) . '.php';
}
/************************************* test *************************************/
use chainOfResponsibility\HandlerAccessToken;
use chainOfResponsibility\HandlerFrequent;
use chainOfResponsibility\HandlerArguments;
use chainOfResponsibility\HandlerSign;
use chainOfResponsibility\HandlerAuthority;
use chainOfResponsibility\Request;
try {
  // 下面我们用责任链模式实现一个api-gateway即接口网关
  // 初始化一个请求对象
  $request            =  new Request();
  // 设置一个请求身份id
  $request->requestId = uniqid();
  // 初始化一个:令牌校验的handler
  $handlerAccessToken =  new HandlerAccessToken();
  // 初始化一个:访问频次校验的handler
  $handlerFrequent    =  new HandlerFrequent();
  // 初始化一个:必传参数校验的handler
  $handlerArguments   =  new HandlerArguments();
  // 初始化一个:签名校验的handler
  $handlerSign        =  new HandlerSign();
  // 初始化一个:访问权限校验的handler
  $handlerAuthority   =  new HandlerAuthority();
  // 构成对象链
  $handlerAccessToken->setNext($handlerFrequent)
                     ->setNext($handlerArguments)
                     ->setNext($handlerSign)
                     ->setNext($handlerAuthority);
  // 启动网关
  $handlerAccessToken->start($request);
} catch (\Exception $e) {
  echo $e->getMessage();
}
ringa_lee

1.建议使用工厂模式
2.写一个public方法为入口,至于参数系审核内容,和审核人员
3.根据相关审核内容字段实例化相关工厂类
4.1.在相关类判断获取目前审核内容状态
4.2获取相关人员权限
4.1 => 4.2 判断相关人员权限是否可以操作审核内容的下一步动作
4.3 可以及时更新,返回true。否则返回false

怪我咯

工作流吧,这种东西是算法和思想,和语言没关系

高洛峰

你去看一下laravel5的middleware怎么实现的 套用一下就行了
或者你也可以用decorator模式来处理审核多层级的问题,但是不如laravel的closure灵活
具体实现代码你自己写吧 这和算法没什么关系

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号