You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何读取返回数组的config.php配置?实现类Laravel config函数

实现类似Laravel的config()函数读取配置

首先,你的核心问题是没正确利用PHP的include/require特性:当PHP文件直接return一个数组时,include该文件会执行文件代码并返回这个数组,完全不需要用file_get_contents(那是读取纯文本内容的方法)。

基础读取方式

直接将include的结果赋值给变量,就能拿到完整的配置数组:

// 建议用绝对路径避免路径问题,比如和当前脚本同目录的情况
$configFile = __DIR__ . '/config.php';
$config = include $configFile;

// 直接访问配置项
echo $config['db_name'];
echo $config['password'];

封装成类似Laravel的config()函数

要实现支持单键、嵌套键读取,且自动缓存配置避免重复加载文件,代码如下:

function config(string $key = null, $default = null)
{
    // 静态变量缓存配置数组,整个请求周期内只加载一次
    static $config = null;
    
    if ($config === null) {
        // 替换为你的config.php绝对路径
        $configFile = __DIR__ . '/config.php';
        // 加载配置文件并获取返回的数组
        $config = include $configFile;
    }
    
    // 不传key时返回整个配置数组
    if ($key === null) {
        return $config;
    }
    
    // 处理点语法,比如通过 'db.host' 读取嵌套数组的值
    $keys = explode('.', $key);
    $value = $config;
    
    foreach ($keys as $segment) {
        if (!isset($value[$segment])) {
            return $default;
        }
        $value = $value[$segment];
    }
    
    return $value;
}

使用示例

// 获取全部配置
$allConfig = config();

// 获取单个配置项
$dbName = config('db_name');

// 读取嵌套配置(假设config.php里有 ['db' => ['host' => '127.0.0.1']])
$dbHost = config('db.host');

// 配置项不存在时返回默认值
$unknownItem = config('unknown.key', 'default_value');

注意事项

  • 必须用绝对路径加载配置文件,防止因当前工作目录变化导致文件找不到,用__DIR__(当前脚本所在目录)拼接路径是最稳妥的方式。
  • 如果你的应用有多份配置文件(比如database.php、app.php),可以扩展这个函数,支持传入文件名来加载对应配置。

内容的提问来源于stack exchange,提问作者Stephen Ngari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:25:34