【问题标题】:I want to understand this piece of PHP code (from a Laravel app.php config file)我想了解这段 PHP 代码(来自 Laravel app.php 配置文件)
【发布时间】:2018-01-31 11:39:03
【问题描述】:

我正在学习 PHP 和 Laravel 的基础知识。我需要了解从名为 app.php 的 Laravel 配置文件中获取的这段代码的语法。我缩短了这个文件的内容以适应这里。我只对语法感兴趣。

<?php

return [
    'name' => env('APP_NAME', 'Laravel'),
    'env' => env('APP_ENV', 'production'),
    'providers' => [
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
    ],
];
?>

我知道 return 在函数中的作用。它终止函数并返回一个值。但在这里,我认为它本身就是返回一个数组。如果我错了,请纠正我。它返回一个关联数组,其中的键是:名称、环境、提供者。双箭头将值分配给数组中的键。因此,例如 env('APP_ENV', 'production'); 被分配为 'env' 键的值。

另一件事是这个返回返回数组的位置?此文件是否包含在其他文件中?

我不明白的另一件事是env() 电话。它是内置的PHP函数吗?它有什么作用?

【问题讨论】:

    标签: php arrays laravel syntax


    【解决方案1】:

    这个return在哪里返回数组?此文件是否包含在其他文件中?

    Laravel 读取并使用 Illuminate\Config\Repository 类中的配置文件返回的数组。

    因此,当您使用 config('app.name') 之类的内容读取值时,它会:

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

    $this-&gt;items 是从配置文件(您所说的数组)读取的配置数据。如果你好奇 Laravel 读取配置文件的方式和位置,请查看 Illuminate\Foundation\Bootstrap\LoadConfiguration 类:

    protected function loadConfigurationFiles(Application $app, RepositoryContract $repository)
    {
        $files = $this->getConfigurationFiles($app);
    
        if (! isset($files['app'])) {
            throw new Exception('Unable to load the "app" configuration file.');
        }
    
        foreach ($files as $key => $path) {
            $repository->set($key, require $path);
        }
    }
    

    【讨论】:

      【解决方案2】:

      include 还可以返回一个值(在本例中为数组),该值将分配给执行包含的脚本中的变量。请参阅PHP Docs 中的部分(紧接在安全警告下方)

      此外,还可以从包含的文件中返回值。您可以像对待普通函数一样获取 include 调用的值。

      看看例子#5


      env()Laravel function

      env函数检索环境变量的值或返回默认值

      【讨论】:

        猜你喜欢
        • 2020-05-24
        • 2018-07-02
        • 1970-01-01
        • 1970-01-01
        • 2019-11-27
        • 2013-09-11
        • 2020-08-27
        • 1970-01-01
        • 2022-06-15
        相关资源
        最近更新 更多