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

Bez fasády

Fasáda je odporúčaná predvoľba, nie jediný vstup. K dispozícii sú tri rovnocenné vstupné body a všetky spúšťajú ten istý kód:

  • Fasáda Git — najkratší zápis, ktorý používa celá táto dokumentácia.
  • Manažér — RoundlyConsulting\Git\GitManager, singleton v kontajneri a koreň fasády. Injektujte ho cez konštruktor: rovnaké API, explicitná závislosť a žiadne statické volania.
  • Vrstva driverov — ploché metódy kontraktu Interfaces\Provider, ktoré prijímajú cestu a na ktoré deleguje každá metóda handle. Tento kontrakt implementuje každý driver a napodobňuje ho fake.

Injektovanie manažéra

use RoundlyConsulting\Git\GitManager;

final class ShipRelease
{
    public function __construct(private GitManager $git) {}

    public function __invoke(string $repository, int $number): string
    {
        return $this->git->github()->repo($repository)->pullRequest($number)->merge();
    }
}

Git::fake() nahradí aj injektovanú inštanciu — GitFake dedí z GitManager, takže trieda s type-hintom na manažér dostane v testoch zaznamenávajúci fake, nie TypeError.

Žiadne triedy akcií

Git je klient vzdialeného API, preto nemá triedy akcií: prípady použitia sú samotné drivery. Handly sú tenké — každá ich metóda je zodpovedajúca plochá metóda drivera s doplnenou cestou — takže túto vrstvu môžete volať aj priamo:

use RoundlyConsulting\Git\Enums\MergeMethod;
use RoundlyConsulting\Git\GitManager;

$github = app(GitManager::class)->github();

$github->mergePullRequest('acme/app', 12, MergeMethod::Squash); // same call as ->repo()->pullRequest(12)->merge()
$github->contents('acme/app', 'README.md', ref: 'main');        // same call as ->repo()->contents()
$github->listInstallations();                                   // same call as ->installations()->all()

Metóda handle → metóda drivera

Metóda handleMetóda drivera (kontrakt Provider)
repo($p)->get()repository($p)
repo($p)->branches() / createBranch()branches($p) / createBranch($p, NewBranch)
repo($p)->commit($sha) / commits()commit($p, $sha) / commits($p)
repo($p)->pullRequests() / createPullRequest()pullRequests($p) / createPullRequest($p, NewPullRequest)
repo($p)->issues() / issue($n) / comment()issues($p) / issue($p, $n) / comment($p, NewComment)
repo($p)->tags() / createTag()tags($p) / createTag($p, NewTag)
repo($p)->releases() / release() / createRelease()releases($p) / release($p, $tagOrId) / createRelease($p, NewRelease)
repo($p)->contents() / createFile() / updateFile()contents($p, $file, $ref) / createFile($p, NewFile) / updateFile($p, UpdatedFile)
repo($p)->compare() / contributors() / languages()compare($p, $base, $head) / contributors($p) / languages($p)
repo($p)->webhooks()->register() / all() / delete()createWebhook($p, NewWebhook) / listWebhooks($p) / deleteWebhook($p, $id)
repo($p)->cloneUrl()cloneUrlForRepository($p, $username, $credentials)
pullRequest($n)->get() / close()pullRequest($p, $n) / closePullRequest($p, $n)
pullRequest($n)->merge() / approve()mergePullRequest($p, $n, …) / approvePullRequest($p, $n, $body)
pullRequest($n)->review() / reviews()reviewPullRequest($p, $n, NewReview) / pullRequestReviews($p, $n)
pullRequest($n)->comment($body)comment($p, new NewComment($n, $body, CommentTarget::PullRequest))
installations()->all() / find($id)listInstallations() / installation($id)
installations()->forOrganization() / forUser()organizationInstallation($org) / userInstallation($login)
installations()->installUrl($state)installUrl($state)

Ploché metódy drivera spúšťajú rovnaké kontroly rozsahu ako handly, takže odmietnu tie isté cesty mimo rozsahu. Fake každé volanie zaznamená pod metódou drivera, na ktorú dorazilo, bez ohľadu na to, ktorú vrstvu ste volali.

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.