---
title: "Výnimky z presetov — Testing for Laravel | Roundly"
description: "Výnimky zadávajte cez kontrolovaný parameter $ignoring, nie cez ->ignoring() — a ako sa prefixové výnimky overia za vás."
url: https://roundly-consulting.com/sk/open-source/navody/testing-for-laravel/vynimky-z-presetov
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Testing for Laravel](https://roundly-consulting.com/sk/open-source/navody/testing-for-laravel.md)

# Výnimky z presetov

Zoznam výnimiek prijíma šesť presetov — strictTypes, finalByDefault, noLocalCryptoPrimitives, noDebuggingLeftovers, noVendorNamespace a modelsGoThroughTheFacade. Zadávajte ho cez parameter $ignoring: takto odovzdané položky sa kontrolujú proti zastaraniu, pretože diera, ktorá sa tvári ako pokrytie, je horšia než žiadne pokrytie.

```php
ArchPresets::finalByDefault('RoundlyConsulting\Shops\Actions', [SomeBase::class]);
ArchPresets::noLocalCryptoPrimitives('RoundlyConsulting\Passkeys', ['RoundlyConsulting\Passkeys\Attestation']);
ArchPresets::noDebuggingLeftovers(['RoundlyConsulting\Shops\Debug\Inspector']);
```

Položka zlyhá, keď:

- Nepomenúva nič existujúce — žiadnu triedu, rozhranie, trait ani enum a ani menný priestor s PHP súbormi: preklep alebo výnimka, ktorá prežila triedu, kvôli ktorej vznikla.
- Existuje, no nezodpovedá ničomu, čo preset prehľadáva — skutočná trieda z iného menného priestoru odovzdaná strictTypes, finalByDefault či noLocalCryptoPrimitives alebo položka noDebuggingLeftovers či noVendorNamespace, ktorej nezodpovedá žiadna trieda, trait, enum ani rozhranie deklarované v $srcDir daného presetu — každé z nich možno vylúčiť menom aj menným priestorom.
- Pri modelsGoThroughTheFacade nevyníma žiadnu triedu, ktorá pravidlo porušuje.

Neodhalí sa položka s triedou, ktorá pravidlo už spĺňa, napríklad trieda, ktorá už je final, v zozname finalByDefault. Dnes nič nerobí, no v deň, keď trieda pravidlo prestane spĺňať, zákaz ticho znova otvorí — zoznamy preto obmedzte na triedy, ktoré výnimku naozaj potrebujú.

## Kontroluje sa aj $alsoAllow

runtimeRequireIsWhitelisted meria svoje $alsoAllow rovnakým metrom: položka zlyhá, keď balík nie je v require — vypadol z neho alebo bol vždy len v require-dev —, alebo keď ho politika už povoľuje (illuminate/\*, ext-\*, roundly-consulting/\*, …). Zlyhanie uvedie každú takú položku aj s dôvodom, po prípadných nepovolených vendoroch. Inak by po závislosti odstránenej z require zostala jej výnimka a vendor by sa neskôr mohol vrátiť bez toho, aby ho niekto znova obhájil.

## Parameter, nie ->ignoring()

Tri presety postavené na arch vrstve Pestu vracajú pôvodnú arch expectation, takže fluentné ->ignoring() z Pestu na ne stále funguje — lenže sa nekontroluje:

```php
// Checked: a stale or misspelled entry FAILS.
ArchPresets::finalByDefault('RoundlyConsulting\Shops\Actions', ['RoundlyConsulting\Nope']);

// NOT checked: the identical bogus entry passes green, silently.
ArchPresets::finalByDefault('RoundlyConsulting\Shops\Actions')->ignoring('RoundlyConsulting\Nope');
```

Túto medzeru priznávame namiesto záplaty: ->ignoring() je vlastná metóda Pestu na internom objekte, ktorého deštruktor expectation vyhodnocuje, a vkliniť balík medzi ne by hrozilo, že arch test ticho prestane bežať. Výnimky navyše platia pre triedu, nie pre funkciu — vylúčenie triedy kvôli jednému volaniu uvoľní celý zákaz pre celú triedu, preto ho obmedzte na najmenšiu triedu, ktorá ho naozaj potrebuje.

## Viac zoznamov v jednom súbore

Každý preset registruje kontrolu svojich výnimiek pod vlastným popisom, takže jeden arch súbor môže mať toľko zoznamov, koľko presetov:

```php
ArchPresets::finalByDefault('RoundlyConsulting\Shops', [ShopException::class]);
ArchPresets::noDebuggingLeftovers([Resource::class]); // a second list — fine
```

## Výnimky sa porovnávajú podľa prefixu

Pest triedu vylúči, ak jej plne kvalifikovaný názov začína reťazcom výnimky — ide o test prefixu, nie o identitu triedy. Vylúčenie jednej triedy tak ticho vylúči každú triedu, ktorej názov začína rovnakými znakmi:

```php
ArchPresets::finalByDefault('RoundlyConsulting\Purchases', [Stripe::class]);
// …also silences StripeClient — without the shadow re-check, removing its final would stay green.
```

finalByDefault to pri zadaní $ignoring uzavrie: reflexiou znova overí každú triedu, ktorú vaše výnimky umlčia bez toho, aby ju menovali. Zatienená trieda, ktorá už je final, zostane zelená; tá, ktorá nie je, zlyhá a uvedie triedu aj výnimku, ktorá ju skryla:

```
These classes are not final, and `finalByDefault` cannot see them:
  - RoundlyConsulting\Metrics\MetricsManager (hidden by the exemption RoundlyConsulting\Metrics\Metrics)
```

Ak má zatienená trieda naozaj zostať otvorená, uveďte ju v $ignoring — stane sa z toho explicitné rozhodnutie, ktoré možno skontrolovať. Výnimky na celý menný priestor zostávajú nedotknuté, keďže vylúčenie podstromu je zámerné. Táto náprava funguje len s parametrom; ak musíte použiť fluentný tvar, zoznam si uložte do premennej a odovzdajte ho aj shadowedClassesAreFinal():

```php
$ignoring = [Github::class, Batch::class];

ArchPresets::finalByDefault('RoundlyConsulting\Git')->ignoring($ignoring);
ArchPresets::shadowedClassesAreFinal('RoundlyConsulting\Git', $ignoring); // fluent form only
```

## Vlastné pravidlá

Pri vlastnom arch pravidle zavolajte exemptionsExist() priamo. $for pomenúva pravidlo — vývojár ho uvidí, keď kontrola zlyhá, a zároveň odlišuje dve kontroly v jednom súbore. Ako $within odovzdajte menný priestor, ktorý vaše pravidlo prehľadáva, a každá položka musí zodpovedať aj niečomu v ňom:

```php
ArchPresets::exemptionsExist($ignoring, 'no facades outside the facade layer');
```

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/testing-for-laravel.md)
