NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Fasáda je odporúčaná voľba, nie jediná cesta. K rovnakému správaniu vedú tri vstupné body:

  • Fasáda Certificates — najkratší zápis, ktorý používa celá táto dokumentácia.
  • Manager RoundlyConsulting\Certificates\CertificatesManager — koreň fasády. Injektujte ho cez konštruktor a získate rovnaké API ako explicitnú závislosť, bez statických volaní.
  • Akcie — jednoúčelové triedy s jedinou metódou execute(), vhodné na skladanie do vlastných akcií, jobov a príkazov.

Injektovaný manager alebo akcia

use RoundlyConsulting\Certificates\Actions\RevokeCertificateAction;
use RoundlyConsulting\Certificates\CertificatesManager;
use RoundlyConsulting\Certificates\DataTransferObjects\IssueCertificateData;

final class SiteCertificates
{
    public function __construct(private CertificatesManager $certificates) {}

    public function launch(string $domain): void
    {
        $this->certificates->issue(IssueCertificateData::make($domain));
        $this->certificates->for($domain)->renewLater();
    }
}

// The raw use case, e.g. from your own action:
app(RevokeCertificateAction::class)->execute($certificate, 'key compromise');

Helper certificates() vracia tú istú inštanciu managera ako app(CertificatesManager::class). Kedysi vracal správcu driverov — ten sa dnes volá CertificateProviderManager a pristupujete k nemu cez Certificates::driver() a Certificates::extend():

use RoundlyConsulting\Certificates\CertificatesManager;

$certificates = app(CertificatesManager::class);  // the facade root
$certificates = certificates();                   // the helper — the same instance

certificates()->renew('shop.example.com');

Metóda fasády → akcia

Každá akcia je v RoundlyConsulting\Certificates\Actions ako final readonly trieda s injektovaním cez konštruktor. Všetky sú dostupné z fasády; žiadna nie je interná:

Metóda fasádyAkciaexecute()
issue(), issueIfMissing(), generate(), for()->issue()IssueCertificateAction(IssueCertificateData $data, ?string $connection = null): Certificate
renew(), for()->renew()RenewCertificateAction(Certificate $certificate): Certificate
renewDue()RenewDueCertificatesAction(?int $thresholdDays = null, bool $queue = false, ?string $connection = null): RenewalReport
revoke(), for()->revoke()RevokeCertificateAction(Certificate $certificate, ?string $reason = null): Certificate
expire(), for()->expire()ExpireCertificateAction(Certificate $certificate): Certificate
sync()SyncCertificatesAction(?string $driver = null, ?string $connection = null): int
prune()PruneCertificatesAction(int $days = 30, CertificateStatus|string|null $status = null, ?string $connection = null): int
renewLater(), for()->renewLater()— (odošle RenewCertificateJob)Job spustí RenewCertificateAction.

Manager pri každom volaní získa akciu z kontajnera, takže väzba v kontajneri, ktorá akciu nahradí, platí pre fasádu, rukoväť aj príkazy. IssueCertificateAction, RenewDueCertificatesAction, SyncCertificatesAction a PruneCertificatesAction prijímajú pripojenie registra ako posledný argument; ostatné pracujú s odovzdaným Certificate. IssueCertificateAction prijíma DTO IssueCertificateData:

use RoundlyConsulting\Certificates\Actions\IssueCertificateAction;
use RoundlyConsulting\Certificates\Actions\RenewDueCertificatesAction;
use RoundlyConsulting\Certificates\DataTransferObjects\IssueCertificateData;

$certificate = app(IssueCertificateAction::class)->execute(
    IssueCertificateData::make('shop.example.com'),
    'tenant', // optional registry connection
);

$report = app(RenewDueCertificatesAction::class)->execute(7, queue: true, connection: 'tenant');

Certificates::fake() nahradí aj väzbu v kontajneri, takže managery injektované cez konštruktor sa zaznamenávajú rovnako ako volania fasády. Priame volanie akcie manager obchádza — a s ním aj fake.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.