【问题标题】:How does laravel load config fileslaravel 如何加载配置文件
【发布时间】:2018-02-17 18:00:38
【问题描述】:

所有的 laravel 配置文件都在 config 目录下,它们都以关联数组的形式返回

//for example Session.php
return[

   /******************************
   * session name
   ******************************/
   "name" => "newBlog"
]; 

以后这个配置可以这样用

Config::get("session.name");

这种方法get 是如何工作的?是否使用require 要求所有这些文件?我试图找到配置类的文件,但我没有得到逻辑 Illuminate\Support\Facades\Config我找不到get方法

请问这是如何实现的???背后的逻辑是什么?

【问题讨论】:

  • 如果你想在vendor/laravel/framework/src/Illuminate/Config/Repository.php那里寻找代码,我的实现是在vendor/laravel/framework/src/Illuminate/Config/Repository.php
  • 是的,我可以在那里找到get 方法,该方法本身使用另一个类Arr::get(),可以在同一目录的支持文件夹中找到,但我可以了解这些配置文件的逻辑加载了吗??

标签: php laravel config


【解决方案1】:

Illuminate\Config\Repository

public function get($key, $default = null)
{
    return Arr::get($this->items, $key, $default);
}

此外,您可以使用 config helper 代替 Config 门面,如 config('session.name')

【讨论】:

  • 以及Arr::get() 是如何加载这些文件的!我已经看到了所有这些我想要了解逻辑的文件
  • 这发生在应用程序的引导过程中。基本上,在引导时,所有配置值都设置在 Config 存储库的 $item 变量中。见Illuminate\Foundation\Bootstrap > LoadConfiguration.phpfunction bootstrap()
【解决方案2】:

这是一个 laravel 配置文件的样子:

// /tmp/file1.php                                                           
<?php                                                                        
return [                                                                     
    'answer' => 42,                                                                
];                                                                           

以下逻辑用于加载文件并将值存储到变量中(see in laravel):

$a = require '/tmp/file1.php'                                                 
var_dump($a); 

在 Laravel 中,值存储在一个名为 Repository 的类中

【讨论】:

    猜你喜欢
    • 2015-03-12
    • 2019-11-13
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多