Initial project structure with Slim skeleton
This commit is contained in:
34
public/.htaccess
Normal file
34
public/.htaccess
Normal file
@ -0,0 +1,34 @@
|
||||
Options All -Indexes
|
||||
|
||||
<Files .htaccess>
|
||||
order allow,deny
|
||||
deny from all
|
||||
</Files>
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
|
||||
# Redirect to HTTPS
|
||||
# RewriteEngine On
|
||||
# RewriteCond %{HTTPS} off
|
||||
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
|
||||
# Some hosts may require you to use the `RewriteBase` directive.
|
||||
# Determine the RewriteBase automatically and set it as environment variable.
|
||||
# If you are using Apache aliases to do mass virtual hosting or installed the
|
||||
# project in a subdirectory, the base path will be prepended to allow proper
|
||||
# resolution of the index.php file and to redirect to the correct URI. It will
|
||||
# work in environments without path prefix as well, providing a safe, one-size
|
||||
# fits all solution. But as you do not need it in this case, you can comment
|
||||
# the following 2 lines to eliminate the overhead.
|
||||
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
|
||||
RewriteRule ^(.*) - [E=BASE:%1]
|
||||
|
||||
# If the above doesn't work you might need to set the `RewriteBase` directive manually, it should be the
|
||||
# absolute physical path to the directory that contains this htaccess file.
|
||||
# RewriteBase /
|
||||
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^ index.php [QSA,L]
|
||||
</IfModule>
|
81
public/index.php
Normal file
81
public/index.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
use App\Application\Handlers\HttpErrorHandler;
|
||||
use App\Application\Handlers\ShutdownHandler;
|
||||
use App\Application\ResponseEmitter\ResponseEmitter;
|
||||
use App\Application\Settings\SettingsInterface;
|
||||
use DI\ContainerBuilder;
|
||||
use Slim\Factory\AppFactory;
|
||||
use Slim\Factory\ServerRequestCreatorFactory;
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
// Instantiate PHP-DI ContainerBuilder
|
||||
$containerBuilder = new ContainerBuilder();
|
||||
|
||||
if (false) { // Should be set to true in production
|
||||
$containerBuilder->enableCompilation(__DIR__ . '/../var/cache');
|
||||
}
|
||||
|
||||
// Set up settings
|
||||
$settings = require __DIR__ . '/../app/settings.php';
|
||||
$settings($containerBuilder);
|
||||
|
||||
// Set up dependencies
|
||||
$dependencies = require __DIR__ . '/../app/dependencies.php';
|
||||
$dependencies($containerBuilder);
|
||||
|
||||
// Set up repositories
|
||||
$repositories = require __DIR__ . '/../app/repositories.php';
|
||||
$repositories($containerBuilder);
|
||||
|
||||
// Build PHP-DI Container instance
|
||||
$container = $containerBuilder->build();
|
||||
|
||||
// Instantiate the app
|
||||
AppFactory::setContainer($container);
|
||||
$app = AppFactory::create();
|
||||
$callableResolver = $app->getCallableResolver();
|
||||
|
||||
// Register middleware
|
||||
$middleware = require __DIR__ . '/../app/middleware.php';
|
||||
$middleware($app);
|
||||
|
||||
// Register routes
|
||||
$routes = require __DIR__ . '/../app/routes.php';
|
||||
$routes($app);
|
||||
|
||||
/** @var SettingsInterface $settings */
|
||||
$settings = $container->get(SettingsInterface::class);
|
||||
|
||||
$displayErrorDetails = $settings->get('displayErrorDetails');
|
||||
$logError = $settings->get('logError');
|
||||
$logErrorDetails = $settings->get('logErrorDetails');
|
||||
|
||||
// Create Request object from globals
|
||||
$serverRequestCreator = ServerRequestCreatorFactory::create();
|
||||
$request = $serverRequestCreator->createServerRequestFromGlobals();
|
||||
|
||||
// Create Error Handler
|
||||
$responseFactory = $app->getResponseFactory();
|
||||
$errorHandler = new HttpErrorHandler($callableResolver, $responseFactory);
|
||||
|
||||
// Create Shutdown Handler
|
||||
$shutdownHandler = new ShutdownHandler($request, $errorHandler, $displayErrorDetails);
|
||||
register_shutdown_function($shutdownHandler);
|
||||
|
||||
// Add Routing Middleware
|
||||
$app->addRoutingMiddleware();
|
||||
|
||||
// Add Body Parsing Middleware
|
||||
$app->addBodyParsingMiddleware();
|
||||
|
||||
// Add Error Middleware
|
||||
$errorMiddleware = $app->addErrorMiddleware($displayErrorDetails, $logError, $logErrorDetails);
|
||||
$errorMiddleware->setDefaultErrorHandler($errorHandler);
|
||||
|
||||
// Run App & Emit Response
|
||||
$response = $app->handle($request);
|
||||
$responseEmitter = new ResponseEmitter();
|
||||
$responseEmitter->emit($response);
|
Reference in New Issue
Block a user