Dátový model a surové dáta
Každý objekt zdroja je nezávislý od platformy: nesie ProviderName, z ktorého pochádza, normalizovaný enum ResourceState namiesto surového reťazca open/opened/OPEN a metódu raw(), ktorá vráti presný dekódovaný payload platformy pre akékoľvek pole, ktoré objekt nemodeluje. raw sa nikdy neserializuje do toArray() ani toJson():
use RoundlyConsulting\Git\Enums\ResourceState;
$pr = Git::github()->repo('acme/api')->pullRequest(1)->get();
$pr->state; // ResourceState::Open — identical across GitHub/GitLab/Bitbucket
$pr->state === ResourceState::Merged;
$pr->draft; // bool
$pr->provider; // ProviderName::Github
$pr->raw()['mergeable']; // any unmodelled provider field, still reachable
$pr->toArray(); // canonical shape — raw is never serialized
$pr->toJson();Mapovanie stavov
Pull requesty a issues normalizujú stav na každej platforme rovnako; nerozpoznané hodnoty sa namiesto výnimky zmenia na Unknown a pôvodný reťazec zostáva dostupný cez raw():
| ResourceState | GitHub | GitLab | Bitbucket |
|---|---|---|---|
Open | open | opened | OPEN |
Closed | closed | closed, locked | DECLINED, SUPERSEDED |
Merged | merged | merged | MERGED |
Unknown | čokoľvek iné | čokoľvek iné | čokoľvek iné |
Stav konceptu (draft) je samostatná booleovská hodnota — PullRequest::$draft — nie stav.
Enumy
Feature, ProviderName, ResourceState, MergeMethod, ReviewEvent a DiffSide zdieľajú pomocné metódy z enums-for-laravel — values(), labels(), options(), validationRule() a vyhľadávanie prípadov:
use RoundlyConsulting\Git\Enums\ProviderName;
ProviderName::values(); // Collection: github, gitlab, bitbucket
ProviderName::options(); // {value, label, name} options for a select
ProviderName::validationRule(); // "in:github,gitlab,bitbucket"
ProviderName::Github->label(); // "GitHub"
$request->validate(['provider' => ['required', ProviderName::validationRule()]]);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.