DI a akcie
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ády | Akcia | execute() |
|---|---|---|
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 kryptomienOdoslaní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.