add chapter about data repositories, and start work on perfomance chapter
This commit is contained in:
parent
eb20213b94
commit
9a1f78947b
165 changed files with 14028 additions and 2028 deletions
55
implementation/16-data-repository/config/dependencies.php
Normal file
55
implementation/16-data-repository/config/dependencies.php
Normal file
|
@ -0,0 +1,55 @@
|
|||
<?php declare(strict_types=1);
|
||||
|
||||
use FastRoute\Dispatcher;
|
||||
use Laminas\Diactoros\ResponseFactory;
|
||||
use Lubian\NoFramework\Factory\DiactorosRequestFactory;
|
||||
use Lubian\NoFramework\Factory\PipelineProvider;
|
||||
use Lubian\NoFramework\Factory\RequestFactory;
|
||||
use Lubian\NoFramework\Http\BasicEmitter;
|
||||
use Lubian\NoFramework\Http\Emitter;
|
||||
use Lubian\NoFramework\Http\InvokerRoutedHandler;
|
||||
use Lubian\NoFramework\Http\Pipeline;
|
||||
use Lubian\NoFramework\Http\RoutedRequestHandler;
|
||||
use Lubian\NoFramework\Http\RouteMiddleware;
|
||||
use Lubian\NoFramework\Repository\FileSystemMarkdownPageRepo;
|
||||
use Lubian\NoFramework\Repository\MarkdownPageRepo;
|
||||
use Lubian\NoFramework\Service\Time\Now;
|
||||
use Lubian\NoFramework\Service\Time\SystemClockNow;
|
||||
use Lubian\NoFramework\Settings;
|
||||
use Lubian\NoFramework\Template\MarkdownParser;
|
||||
use Lubian\NoFramework\Template\MustacheRenderer;
|
||||
use Lubian\NoFramework\Template\ParsedownParser;
|
||||
use Lubian\NoFramework\Template\Renderer;
|
||||
use Mustache_Engine as ME;
|
||||
use Mustache_Loader_FilesystemLoader as MLF;
|
||||
use Psr\Http\Message\ResponseFactoryInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Http\Server\MiddlewareInterface;
|
||||
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
|
||||
use Symfony\Contracts\Cache\CacheInterface;
|
||||
|
||||
use function FastRoute\simpleDispatcher;
|
||||
|
||||
return [
|
||||
// alias
|
||||
Now::class => fn (SystemClockNow $n) => $n,
|
||||
ResponseFactoryInterface::class => fn (ResponseFactory $rf) => $rf,
|
||||
Emitter::class => fn (BasicEmitter $e) => $e,
|
||||
MiddlewareInterface::class => fn (RouteMiddleware $r) => $r,
|
||||
RoutedRequestHandler::class => fn (InvokerRoutedHandler $h) => $h,
|
||||
RequestFactory::class => fn (DiactorosRequestFactory $rf) => $rf,
|
||||
CacheInterface::class => fn (FilesystemAdapter $a) => $a,
|
||||
MarkdownParser::class => fn (ParsedownParser $p) => $p,
|
||||
MarkdownPageRepo::class => fn (FileSystemMarkdownPageRepo $r) => $r,
|
||||
|
||||
// Factories
|
||||
ResponseInterface::class => fn (ResponseFactory $rf) => $rf->createResponse(),
|
||||
ServerRequestInterface::class => fn (RequestFactory $rf) => $rf->fromGlobals(),
|
||||
Renderer::class => fn (Mustache_Engine $e) => new MustacheRenderer($e),
|
||||
MLF::class => fn (Settings $s) => new MLF($s->templateDir, ['extension' => $s->templateExtension]),
|
||||
ME::class => fn (MLF $mfl) => new ME(['loader' => $mfl]),
|
||||
Dispatcher::class => fn () => simpleDispatcher(require __DIR__ . '/routes.php'),
|
||||
Pipeline::class => fn (PipelineProvider $p) => $p->getPipeline(),
|
||||
FileSystemMarkdownPageRepo::class => fn (Settings $s) => new FileSystemMarkdownPageRepo($s->pagesPath),
|
||||
];
|
11
implementation/16-data-repository/config/middlewares.php
Normal file
11
implementation/16-data-repository/config/middlewares.php
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?php declare(strict_types=1);
|
||||
|
||||
use Lubian\NoFramework\Http\RouteMiddleware;
|
||||
use Middlewares\TrailingSlash;
|
||||
use Middlewares\Whoops;
|
||||
|
||||
return [
|
||||
Whoops::class,
|
||||
TrailingSlash::class,
|
||||
RouteMiddleware::class,
|
||||
];
|
15
implementation/16-data-repository/config/routes.php
Normal file
15
implementation/16-data-repository/config/routes.php
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?php declare(strict_types=1);
|
||||
|
||||
use FastRoute\RouteCollector;
|
||||
use Lubian\NoFramework\Action\Hello;
|
||||
use Lubian\NoFramework\Action\Other;
|
||||
use Lubian\NoFramework\Action\Page;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
|
||||
return function (RouteCollector $r): void {
|
||||
$r->addRoute('GET', '/hello[/{name}]', Hello::class);
|
||||
$r->addRoute('GET', '/page', [Page::class, 'list']);
|
||||
$r->addRoute('GET', '/page/{page}', [Page::class, 'show']);
|
||||
$r->addRoute('GET', '/another-route', [Other::class, 'someFunctionName']);
|
||||
$r->addRoute('GET', '/', fn (Response $r) => $r->withStatus(302)->withHeader('Location', '/hello'));
|
||||
};
|
12
implementation/16-data-repository/config/settings.php
Normal file
12
implementation/16-data-repository/config/settings.php
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?php declare(strict_types=1);
|
||||
|
||||
use Lubian\NoFramework\Settings;
|
||||
|
||||
return new Settings(
|
||||
environment: 'prod',
|
||||
dependenciesFile: __DIR__ . '/dependencies.php',
|
||||
middlewaresFile: __DIR__ . '/middlewares.php',
|
||||
templateDir: __DIR__ . '/../templates',
|
||||
templateExtension: '.html',
|
||||
pagesPath: __DIR__ . '/../data/pages/',
|
||||
);
|
Loading…
Add table
Add a link
Reference in a new issue