在 Laravel 中从文件读取数组的最佳实践

Emt*_*hid 3 php laravel

我的问题可能很愚蠢。但我需要澄清我对此的概念。

Laravel 中有多种读取数组的方法。如config()变量、.env函数、trans()函数、文件读取.csv.txt.json

可能他们都有不同的目的。但我需要知道从控制器读取数组数据的良好做法是什么。给出了一个例子。谢谢

数组示例:

       [
        "mohammad" => [
           "physics" => 35,
           "maths" => 30,   
           "chemistry" => 39
        ],

        "qadir" => [
           "physics" => 30,
           "maths" => 32,
           "chemistry" => 29
        ],

        "zara" => [
           "physics" => 31,
           "maths" => 22,
           "chemistry" => 39
        ]
     ]
Run Code Online (Sandbox Code Playgroud)

小智 7

Laravelvar_export()在底层使用以下方式缓存配置:

$config = [
    'myvalue' => 123, 
    'mysub' => [
         'mysubvalue' => true
    ]
];
$code = '<?php return '.var_export($config, true).';'.PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

其中$config可以是多维关联数组。如果将该字符串放入文件中:

file_put_contents(config_path('myconf.php'), $code);
Run Code Online (Sandbox Code Playgroud)

在代码中,您只需包含该文件即可获得结构

$myconfig = require config_path('myconf.php');
dd($myconfig);
Run Code Online (Sandbox Code Playgroud)

或(如果是配置文件)调用

echo config('myconf.myvalue');
Run Code Online (Sandbox Code Playgroud)

要以 Laravel 风格检索值,您可以使用 Illuminate\Config\Repository 类,例如。

$conf = new Illuminate\Config\Repository($myconfig);
echo $conf->get('mysub.mysubvalue');
Run Code Online (Sandbox Code Playgroud)

或者

echo Illuminate\Support\Arr::get($myconfig, 'mysub.mysubvalue');
Run Code Online (Sandbox Code Playgroud)

希望这能澄清并有所帮助