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

Balík má tri rovnocenné vstupné body a všetky spúšťajú ten istý kód:

  • Fasáda Approvals — najkratší zápis a odporúčaná voľba.
  • Manažér RoundlyConsulting\Approvals\ApprovalsManager — koreň fasády. Injektujte ho cez konštruktor a dostanete rovnaké API ako explicitnú závislosť, bez statických volaní.
  • Akcie v RoundlyConsulting\Approvals\Actions — jednoúčelové triedy s metódou execute(), ktoré skladáte do vlastných akcií, jobov a príkazov.

Injektovanie manažéra

use RoundlyConsulting\Approvals\ApprovalsManager;

final class ApproveInvoice
{
    public function __construct(private ApprovalsManager $approvals) {}

    public function __invoke(Invoice $invoice, User $user): void
    {
        $this->approvals->for($invoice)->as($user)->approve();
    }
}

Approvals::fake() podstrčí podtyp ApprovalsManager fasáde aj injektovaným manažérom, takže aj takto napísaný kód sa v testoch zaznamená.

Volanie akcie

use RoundlyConsulting\Approvals\Actions\ApproveAction;
use RoundlyConsulting\Approvals\Actions\OpenApprovalRequestAction;
use RoundlyConsulting\Approvals\DataTransferObjects\ApprovalRequestData;
use RoundlyConsulting\Approvals\DataTransferObjects\DecisionData;
use RoundlyConsulting\Approvals\Enums\ApprovalRule;

app(OpenApprovalRequestAction::class)->execute(
    new ApprovalRequestData($invoice, [$a, $b, $c], ApprovalRule::Quorum, quorum: 2),
);

app(ApproveAction::class)->execute($user, $invoice, DecisionData::approved('LGTM'));

Manažér si každú akciu tiež vytvára z kontajnera, takže binding, ktorý pre akciu zaregistrujete, platí aj pri volaní cez fasádu.

Metóda fasády → akcia

AkciaCesta cez fasádu
ApproveActionfor()->as()->approve()
RejectActionfor()->as()->reject()
RequestApprovalActionfor()->as()->ask()
CancelApprovalActionfor()->as()->cancel()
ToggleApprovalActionfor()->as()->toggle()
OpenApprovalRequestActionrequest()->from()->open()
RequestStagedApprovalActionrequest()->stages()->open()
OpenWorkflowRequestActionrequest()->workflow()->open()
DelegateApprovalsActiondelegations()->to()->grant()
RevokeApprovalDelegationActiondelegations()->revoke()
ExpireApprovalsActionexpire()

Signatúry všetkých metód execute() a DTO, ktoré akcie prijímajú, nájdete v časti Akcie a DTO.

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.