DI a priame triedy
Fasáda je odporúčaná voľba, nie jediná cesta. Crypto má tri rovnocenné vstupné body a všetky tri spúšťajú rovnaký kód:
- Fasáda Crypto — najkratší zápis, ktorý používa celá táto dokumentácia.
- Manažér RoundlyConsulting\Crypto\CryptoManager — koreň fasády, injektovaný cez konštruktor. Rovnaké API, explicitná závislosť a žiadne statické volania.
- Triedy, ktoré fasáda sprístupňuje — RsaKey, Jws, Token, Certificate a ďalšie — volané priamo. Základné továrne nepotrebujú kontajner, konfiguráciu ani disk.
Injektovanie manažéra
CryptoManager je finálny singleton v kontajneri bez argumentov konštruktora, takže injektovaná inštancia je presne ten objekt, ktorý volá fasáda:
use RoundlyConsulting\Crypto\CryptoManager;
final class IssueApiToken
{
public function __construct(private CryptoManager $crypto) {}
public function __invoke(): string
{
return $this->crypto->random()->token(48);
}
}
// Or resolve it — a container singleton, the exact object the facade calls:
app(CryptoManager::class)->keys()->rsa()->generate(3072);Priame volanie tried
Každá trieda funguje samostatne — tento zápis uvádza každá časť o funkciách ako alternatívu k fasáde:
use RoundlyConsulting\Crypto\Jose\Jws;
use RoundlyConsulting\Crypto\Random\Token;
use RoundlyConsulting\Crypto\Signature\Key\RsaKey;
use RoundlyConsulting\Crypto\X509\Certificate;
$key = RsaKey::private($pem); // core factories need no container, config or disk
$code = Token::numeric(6);
$certificate = Certificate::fromDer($der);
$jws = new Jws;Žiadne triedy akcií
Crypto nemá triedy akcií. Ide o bezstavové výpočty, preto balík namiesto jednej akcie na metódu ponúka obyčajné servisné objekty: vnorené prístupy sú finálne, nedržia stav a každá ich metóda deleguje na jednu statickú továreň. Tabuľka priraďuje každej metóde fasády triedu, ktorú sprístupňuje:
| Metóda fasády | Sprístupňuje |
|---|---|
jws() | new Jose\Jws |
jwk() · jwkFromArray() · jwkFromJson() | Jwk::fromPublicKey() · Jwk::fromArray() · Jwk::fromJson() |
x509()->fromPem() · fromDer() · fromBase64() | Certificate::fromPem() · fromDer() · fromBase64() |
x509()->chain()->fromX5c() · fromPems() · fromPemBundle() · fromCertificates() | Chain::fromX5c() · fromPems() · fromPemBundle() · new Chain() |
keys()->rsa() · keys()->ec() · keys()->hmac() | RsaKey::… · EcKey::… · HmacSecret::… (same method names) |
keys()->ed25519()->public*() · private*() · generate() | OkpKey::ed25519*() · fromSecretKey() / secretKeyFrom*() · generate() |
hs() · rs() · es() · eddsa() · verifier() | new Hs · new Rs · new Es · new EdDSA · new KeyVerifier |
ecDer()->fromRaw() · toRaw() · isValid() | Der::fromRaw() · Der::toRaw() · Der::isValid() |
hmac() · digest() · constantTimeEquals() | new Hmac · new Digest · ConstantTime::equals() |
aes256Gcm() | new Aead\Aes256Gcm |
derDecoder() · cbor() | new DerDecoder · new CborDecoder |
coseKey() · authenticatorData() | CoseKey::fromCbor() · AuthenticatorData::parse() |
totp() · hotp() · provisioningUri() | new Totp · new Hotp · ProvisioningUri::totp() |
random()->bytes() · token() · numeric() · alphanumeric() · fromAlphabet() · secret() | Bytes::generate() · Token::urlSafe() · Token::numeric() · Token::alphanumeric() · Token::fromAlphabet() · Secret::base32() |
base64Url* · base64* · base32* · hex* (Encode / Decode) | Base64Url · Base64 · Base32 · Hex — ::encode() / ::decode() |
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.