Я работаю с Slim 3 несколько лет, и я уверен, что не существует "официального" способа настройки параметров среды. Но я хотел бы рассказать вам, как я это делаю.
Сначала создайте каталог config/
в корневом каталоге вашего проекта.
Затем поместите все ваши файлы конфигурации в этот каталог config/
.
- Создать файл:
config/defaults.php
Файл содержит все настройки по умолчанию для всех сред.
<?php
//
// Configure defaults for the whole application.
//
// Error reporting
error_reporting(0);
ini_set('display_errors', '0');
// Timezone
date_default_timezone_set('Europe/Berlin');
// Slim settings
$settings = [
'httpVersion' => '1.1',
'responseChunkSize' => 4096,
'outputBuffering' => 'append',
'determineRouteBeforeAppMiddleware' => true,
'displayErrorDetails' => false,
'addContentLengthHeader' => true,
'routerCacheFile' => false,
];
Полный пример
- Затем создайте файл конфигурации для среды разработки:
config/development.php
<?php
//
// Development environment
//
$settings['env'] = 'development';
// Error reporting
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Display all errors
$settings['displayErrorDetails'] = true;
$settings['db']['host'] = '{{db_host}}';
$settings['db']['database'] = '{{db_database}}';
Повторите этот шаг для integration.php
, staging.php
и production.php
.
- Затем создайте файл
env.php
, чтобы определить эффективную среду.
Примечание: пожалуйста, не передавайте этот файл в git.
<?php
/**
* Environment specific application configuration.
*
* You should store all secret information (username, password, token) here.
*
* Make sure the env.php file is added to your .gitignore
* so it is not checked-in the code
*
* Place the env.php _outside_ the project root directory, to protect against
* overwriting at deployment.
*
* This usage ensures that no sensitive passwords or API keys will
* ever be in the version control history so there is less risk of
* a security breach, and production values will never have to be
* shared with all project collaborators.
*/
require __DIR__ . '/development.php';
// Database
$settings['db']['username'] = '{{db_username}}';
$settings['db']['password'] = '{{db_password}}';
// SMTP
$settings['smtp']['username'] = 'user@example.com';
$settings['smtp']['password'] = '';
- Затем создайте файл
config/settings.php
, который объединит все остальные файлы конфигурации:
<?php
// Defaults
require __DIR__ . '/defaults.php';
// Load environment configuration
if (file_exists(__DIR__ . '/../../env.php')) {
require __DIR__ . '/../../env.php';
} elseif (file_exists(__DIR__ . '/env.php')) {
require __DIR__ . '/env.php';
}
if (defined('APP_ENV')) {
require __DIR__ . '/' . APP_ENV . '.php';
}
return $settings;
Использование
В вашем config/bootstrap.php
вы можете загрузить все настройки и передать эту конфигурацию экземпляру Slim App:
// Instantiate the app
$app = new \Slim\App(['settings' => require __DIR__ . '/../config/settings.php']);
// Set up dependencies
// Register middleware
// Register routes
$app->run();