iis6.1的网站建设及权限设置,wordpress自定义目录,想做服装电商怎么入手,招聘网页制作课程设计2017年6月28日 10:41:19 星期三 情景: 在多次处理数组的时候, 要自定义好多个临时变量, 起名字特别麻烦 于是, 就想到利用PHP的 1.魔法方法__call 2.不定参数, 参数自动解包的特性 写了一个简单的链式操作类: 调用举例: 1 $arr [2 [id 1, name 111],3 [id [2 [id 1, name 111],3 [id 2, name 222],4 [id 3, name 333],5 [id 4, name 333],6 [id 5, name ],7 ];8 9 echo Data::ini($arr)-array_column(name, id)-array_filter()-array_unique(); // {1:111,2:222,3:333} 调用__toString
10 Data::ini($arr)-array_column(name, id)-array_filter()-array_unique()-count()-strval()-echo(); // 3
11 Data::ini($arr)-array_column(name, id)-array_filter()-array_unique()-reset()-var_dump(); // string(3) 111
12 Data::ini($arr)-array_column(name, id)-array_filter()-array_unique()-end()-echo(); // 333
13 var_dump(Data::ini($arr)-array_column(name, id)-array_filter()-array_unique()-empty()); //bool(false)
14 echo Data::ini($arr)-array_column(name, id)-array_filter()-array_unique()-get(1); //111
15 echo Data::ini($arr)-array_column(name, id)-array_filter()-array_unique()-get(5); //0
16 Data::ini($arr)-array_column(name, id)-array_filter()-array_unique()-json_encode()-exit(); // {1:111,2:222,3:333}
17 Data::ini($arr)-array_column(name, id)-array_filter()-array_unique()-implode(,)-echo();
18 Data::ini(aaa^111|bbb^222|ccc^333)-explode(|)-json_encode()-echo(); 代码文件: 1 ?php2 3 /**4 * 此类的本意是链式调用PHP自带函数5 * 除了本类中自带的函数, 调用其它函数时需要该函数的第一个原始参数是待处理的数据($this-data)6 * 本类中有些函数名跟PHP自带函数一样, 需要php7以上支持(PHP7优化了词法分析器, 可以做出区分)7 */8 class Data9 {
10 public $data null;
11
12 public function __construct($data)
13 {
14 $this-data $data;
15 }
16
17 //没有起名为getInstance或init是因为 ini三个字母可以只用右手就可以敲出来
18 public static function ini($data)
19 {
20 return new Data($data);
21 }
22
23 /*
24 * 核心代码
25 * 利用可变函数(变量函数)去隐式调用PHP自带函数
26 * 可变函数不能用于例如 echoprintunset()isset()empty()includerequire 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
27 * http://www.php.net/manual/zh/functions.variable-functions.php
28 */
29 public function __call($func, $args)
30 {
31 $this-data $func($this-data, ...$args);
32 return $this;
33 }
34
35 public function get($key, $default0)
36 {
37 // return $this-data[$key] ?? $default;
38 return isset($this-data[$key]) ? $this-data[$key] : $default;
39 }
40
41 public function group($key)
42 {
43 $new array();
44 foreach ($this-data as $v) {
45 $new[$v[$key]][] $v;
46 }
47 $this-data $new;
48 return $this;
49 }
50
51 public function implode($char)
52 {
53 $this-data implode($char, $this-data);
54 return $this;
55 }
56
57 public function explode($char)
58 {
59 $this-data explode($char, $this-data);
60 return $this;
61 }
62
63 public function empty()
64 {
65 return empty($this-data);
66 }
67
68 public function echo()
69 {
70 echo $this-data;//参数为整型时会被当作状态码返回 e.g. 200/404/500.... 浏览器无输出
71 }
72
73 public function exit()
74 {
75 exit($this-data); //参数为整型时会被当作状态码返回 e.g. 200/404/500.... 浏览器无输出
76 }
77
78 //echo exit 时默认调用此函数
79 public function __toString()
80 {
81 return json_encode($this-data);
82 }
83
84 } 转载于:https://www.cnblogs.com/iLoveMyD/p/7088685.html