获取 slim 4 中的设置(例如应用程序根目录的路径)

Get settings in slim 4 (eg. path of application root directory)

问题

如何访问路径设置,或者更一般地说,如何访问 settings.php 中定义的设置。

我的settings.php

重要说明:这些是测试环境的值,必须更改生产环境

// Should be set to 0 in production
error_reporting(E_ALL);

// Should be set to '0' in production
ini_set('display_errors', '1');

// Timezone
date_default_timezone_set('FILL_IN_YOUR_TIMEZONE');

// Settings
$settings = [];

// Path settings
$settings['root'] = dirname(__DIR__);
$settings['temp'] = $settings['root'] . '/tmp';
$settings['public'] = $settings['root'] . '/public_html';

// Error Handling Middleware settings
$settings['error'] = [

    // Should be set to false in production
    'display_error_details' => true,

    // Parameter is passed to the default ErrorHandler
    // View in rendered output by enabling the "displayErrorDetails" setting.
    // For the console and unit tests we also disable it
    'log_errors' => true,

    // Display error details in error log
    'log_error_details' => true,
];

return $settings;

我已经为此工作了几个小时,尝试了不同的想法,但在 Slim v4 文档和其他网站上都没有找到任何有用的线索。

解决方案非常简单,但不知何故缺少 slim 4 的文档:

您可以通过 $app->get('settings') 访问设置。一个路由内,也就是$this,当然是

例如:

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

$app->get('/wiki/{id:[1-9]\d*}/edit'), function (ServerRequestInterface $request, ResponseInterface $response) {
   ...
   $filename = $this->get('settings')['root'].'/src/content/wiki/edit.html';
   ...
   return (...);
});