php检查函数必传参数是否存在的实例详解


Posted in PHP onAugust 28, 2017

php检查函数必传参数是否存在的实例详解

在php实际编程中,接口经常会接收到前端传来的参数,其中有些参数不是必传的,有些参数是必传的,如何“检查函数必传参数是否存在”呢?为了解决该问题,可以参考以下的示例方法:

/** 
 * @brief 检测函数必传参数是否存在 
 * @param $params array 关联数组 要检查的参数 
 * @param array $mod array 索引数组 要检查的字段 
 * @param array $fields array 索引数组 额外要检查参数的字段 
 * @return bool 
 * @throws Exception 
 */ 
private function checkParamsExists($params, $mod = [], $fields = []) 
{ 
  if (empty($params)) { 
    throw new \Exception(Error::ERROR_INVALID_PARAMETER_MSG . ',[checkParamsExists] the array of params is empty', Error::ERROR_INVALID_PARAMETER_CODE); 
  } 
  $params = is_array($params) ? $params : [$params]; 
 
  if ($fields) { 
    $fields = array_flip($fields); 
    $params = array_merge($params, $fields); 
  }  
 
  foreach ($mod as $mod_key => $mod_value) { 
    if (!array_key_exists($mod_value, $params)) { 
      throw new \Exception(Error::ERROR_INVALID_PARAMETER_MSG . ',[checkParamsExists]' . json_encode($params) . ' do not have key field(' . $mod_value . ')', Error::ERROR_INVALID_PARAMETER_CODE); 
    } 
  } 
  return true; 
}

在实际应用时,于应用程序逻辑的开始处,直接调用该方法即可。

注意:其中的错误码为我自定义的错误码,使用时务必改成你自己的。

以上就是php检查函数必传参数是否存在的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
默默小谈PHP&MYSQL分页原理及实现
Jan 02 PHP
一个自定义位数的php多用户计数器代码
Mar 11 PHP
php Http_Template_IT类库进行模板替换
Mar 19 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
php使HTML标签自动补全闭合函数代码
Oct 04 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 23 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 #PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 #PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 #PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 #PHP
PHP实现的简单sha1加密功能示例
Aug 27 #PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 #PHP
详解PHP swoole process的使用方法
Aug 26 #PHP
You might like
简化php模板页面中分页代码的解析
2009/02/06 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
发现的以前不知道的函数
2006/09/19 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
Python中一行和多行import模块问题
2018/04/01 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
django认证系统 Authentication使用详解
2019/07/22 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
领导干部考察材料
2014/02/08 职场文书
教师现实表现材料
2014/02/14 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
幼儿学前班评语
2014/12/29 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android