Návod

Infraštruktúra

Cache, session, uploady, filesystem a HTTP klient bez väzby na interné časti frameworku.

Cache pre dáta, ktoré sa dajú znovu zostaviť

Používaj CacheManager pre dáta, ktoré sa dajú znovu vypočítať, napríklad zoznamy článkov alebo navigáciu. Cache nie je zdroj pravdy.

example.php
use Lemonade\Framework\Cache\CacheManager;

final class ArticleFeed
{
    public function __construct(
        private readonly CacheManager $cache,
    ) {}

    public function latest(): array
    {
        return $this->cache->remember('articles.latest', 600, function (): array {
            return [];
        });
    }
}

Session a flash správy

V controlleroch je flash() pohodlný spôsob pre jednorazové správy cez redirect. Mimo controllerov odovzdávaj session alebo flash abstrakciu explicitne.

example.php
$this->flash()->set('success', 'Article saved.');

return $this->redirect($this->url()->route('articles.index'));

Uploady a filesystem

Na uploady používaj upload() s nakonfigurovanými profilmi a na prácu so súbormi filesystem(). Limity aj cieľové adresáre drž v YAML konfigurácii.

example.php
$image = $this->upload()->uploadImage('image', 'article_image');
$content = $this->filesystem()->read($this->app()->basePath('README.md'));

HTTP klient

Pre odchádzajúce integrácie odovzdaj Psr\Http\Client\ClientInterface spolu s PSR request factory. Timeouty a SSL nastavuj v HttpClient.yaml.

example.php
<?php

declare(strict_types=1);

namespace App\Services;

use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;

final class StatusApi
{
    public function __construct(
        private readonly ClientInterface $client,
        private readonly RequestFactoryInterface $requests,
    ) {}

    public function check(): void
    {
        $request = $this->requests->createRequest('GET', 'https://status.example.test/health');
        $this->client->sendRequest($request);
    }
}