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

 

posted @ 2022-10-08 15:28  myD  阅读(25)  评论(0编辑  收藏  举报