PHP框架开发——使用 array_reduce 自定义配置文件
定义 config 函数例如配置文件为
app.php
<?php return [ "middlewares" => [ "before" => [ "app\Http\Middleware\BeforeMiddleware", "app\Http\Middleware\NextMiddleware" ], "after" => [ "app\Http\Middleware\AfterMiddleware" ] ] ];
通过 config("app.middlewares.after") 访问配置文件中的内容
config函数定义如下
<?php if (!function_exists("config")) { function config($key) { $key_arr = explode(".", $key); $arr = include ROOT_DIR . "/config/" . $key_arr[0] . ".php"; array_shift($key_arr); return array_reduce($key_arr, function ($arr, $key) { return $arr[$key]; }, $arr); } }
注意两点
1.函数的第一个参数数组中的值是传递到匿名函数中的第二个函数使用的
2.如果没设置第三个函数的话,匿名函数的默认值是 null
例如
<?php $arr = [1,2,3,4,5]; array_reduce($arr,function($x,$y){ return $x + $y; });
第一次执行的时候 $x = null;$y = 1 而不是 $x = 1;$y = 2;