• PHP获取参数时, 解耦其默认值的处理逻辑


    2022-10-8 15:18:41 星期六

    获取浏览器端传来的数据时, 如果没有获取到, 一般会给个默认值:

    Request::get('test', 'default'); //第二个参数是默认值

    但是, 默认值只能是一个变量(如上边代码第二个参数), 不能有复杂的逻辑, 如果想要进一步处理, 就需要在获取参数后下边写代码处理

    想着, 希望有一个专门的类去处理参数的默认值问题, 减少跟主流程代码的耦合, 这就要求, "default"参数可支持传入函数调用, 这样对原来的写法改动就最少了

    如下边代码, 在浏览器中输入URL: http://www.test7.com/index.php?a=2 

     1 // 获取请求参数的类
     2 class Request
     3 {
     4     public static function get($field, $default) {
     5         if (is_callable($default)) {
     6             return $default($_GET[$field]); //这里用到的是PHP的"可变函数"功能, 变量后边加上小括号, PHP就会尝试把变量当做函数去调用
     7         } else {
     8             return $default;
     9         }
    10     }
    11 }
    12 
    13 //处理请求数据的类
    14 class Change
    15 {
    16     public static function double($v=0)
    17     {
    18         return $v*$v;
    19     }
    20 }
    21 
    22 
    23 echo Request::get('a', function($v){return $v*$v;}); //4
    24 echo '<br>';
    25 echo Request::get('a', 'Change::double'); //4 (PHP > 7.0)
    26 echo '<br>';
    27 echo Request::get('a', ['Change', 'double']); //4
    28 echo '<br>';
    29 echo Request::get('a', [Change::class, 'double']); //4
    30 echo '<br>';
    31 echo Request::get('a', 0); //0
  • 相关阅读:
    卡常技巧
    Java经典习题3
    Java经典习题4
    VC++ MFC 文件处理unicode
    批处理更换ip地址
    C#实现系统托盘
    驱动打印
    c++ vs2010 GetWindowText GetWindowTextW
    VC++ MFC ListBox 复选框
    C# 获取本机ip地址
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/16769099.html
Copyright © 2020-2023  润新知