Voliteľné traity
Tri traity pridávajú vášmu providerovi pomocníkov na registráciu. Každý centralizuje ochranu idempotencie, takže dvojitý boot — napríklad package discovery plus explicitná registrácia providera — nikdy nič neprepíše ani nezaregistruje dvakrát:
use RoundlyConsulting\PackageToolkit\Concerns\InteractsWithGates;
use RoundlyConsulting\PackageToolkit\Concerns\RegistersBladeDirectives;
use RoundlyConsulting\PackageToolkit\Concerns\RegistersBlueprintMacros;
final class CommentsServiceProvider extends PackageServiceProvider
{
use InteractsWithGates;
use RegistersBladeDirectives;
use RegistersBlueprintMacros;
public function boot(): void
{
parent::boot();
$this->registerBlueprintMacros(); // ownerKey/morphKey/auditable/polymorphicSubject/whereLikeEscaped
$this->registerBladeDirective('comment', $handler); // no-op if already registered
$this->registerBladeIf('commented', $condition); // @commented(...) … @else … @endcommented
$this->defineGate('manage-comments', $callback); // left untouched if the host defined it
}
}InteractsWithGates
defineGate(string $ability, callable|string $callback) definuje autorizačný gate len vtedy, ak ho hostiteľ pre danú schopnosť ešte nedefinoval — balík tak nikdy neprepíše vlastnú politiku hostiteľa pre tú istú schopnosť.
RegistersBladeDirectives
registerBladeDirective(string $name, callable $handler) zaregistruje Blade direktívu. registerBladeIf(string $name, callable $condition) zaregistruje podmienenú direktívu z callbacku, ktorý vracia boolean; Blade ju rozvinie na @name, @elsename, @unlessname a @endname. Názov obsadený v ktorejkoľvek z týchto štyroch podôb zostane nedotknutý:
// boot()
$this->registerBladeIf('commentsEnabled', static fn (bool $flag): bool => $flag);@commentsEnabled($flag)
Comments are open.
@else
Comments are closed.
@endcommentsEnabled
@unlesscommentsEnabled($flag)
Comments are closed.
@endcommentsEnabledRegistersBlueprintMacros
registerBlueprintMacros() zaregistruje schémové makrá ownerKey(), morphKey(), auditable() a polymorphicSubject() na Blueprint a makro whereLikeEscaped() na query aj Eloquent builder. Každé stráži vlastná kontrola makier frameworku. Použitie nájdete v častiach Typy kľúčov a schémové makrá a Databázové pomocníky.
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.