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

Každá metóda vracia builder, takže deklarácie sa reťazia. Ako prvú volajte name() — určuje konfiguračné kľúče, menné priestory views a prekladov aj všetky publish tagy:

MetódaČo robí
name(string $name)Identifikátor balíka. Určuje konfiguračné kľúče, menné priestory views a prekladov aj publish tagy.
hasConfigFile(?string $file = null)Zlúči a publikuje konfiguračný súbor. Predvolene <name>.php (kľúč <name>, tag <name>-config).
hasMigrations()Publikuje každý súbor database/migrations/*.php pod <name>-migrations s vloženou časovou pečiatkou a v poradí adresára. Nič sa nenačítava automaticky.
hasMigration(string $name)Publikuje jeden súbor database/migrations/<name>.php.stub pod <name>-migrations s vloženou pečiatkou. Len pre zdroje .php.stub.
hasTranslations()Načíta a publikuje preklady (do lang/vendor/<name>, tag <name>-translations).
hasViews(?string $namespace = null)Zaregistruje a publikuje Blade views (menný priestor predvolene <name>, tag <name>-views).
hasRoutes(string $file, ?string $enabledVia = null)Načíta súbor rout (voliteľne za boolovským konfiguračným kľúčom, ktorý sa číta ako Config::boolean()) a publikuje ho pod <name>-routes. Nerozpoznaná hodnota prepínača vyhodí výnimku pri boote.
hasCommands(array $commands)Zaregistruje konzolové príkazy (len v konzole). Opakované volania sa sčítajú.
hasFacadeAlias(string $class, ?string $configKey = null)Zaregistruje alias triedy; o jeho názve alebo vynechaní rozhoduje konfigurácia a nerozpoznaná hodnota vyhodí výnimku.
contributesToAbout(?Closure $data = null)Pridá sekciu do php artisan about.
publishesStubs(string $from, string $to, string $tag)Publikuje ľubovoľnú sadu súborov pod vlastným tagom.

Úplná deklarácia

Balík, ktorý využíva všetky metódy buildera:

use Illuminate\Support\Str;
use RoundlyConsulting\PackageToolkit\Package;

public function configurePackage(Package $package): void
{
    $package
        ->name('comments')
        ->hasConfigFile()                                       // config/comments.php
        ->hasMigrations()                                       // database/migrations/*.php
        ->hasMigration('create_comment_reactions_table')        // database/migrations/<name>.php.stub
        ->hasTranslations()                                     // resources/lang → comments::
        ->hasViews()                                            // resources/views → comments::
        ->hasRoutes('comments.php', 'comments.routes.enabled')  // routes/comments.php, gated by config
        ->hasCommands([PruneCommentsCommand::class])            // console only
        ->hasFacadeAlias(Comments::class, 'comments.alias')     // alias decided by config
        ->contributesToAbout(static fn (): array => [
            'Package' => 'comments',
            'Key type' => (string) config('comments.key_type'),
            'API key' => Str::mask((string) config('comments.api_key'), '*', 7),
        ])
        ->publishesStubs(
            $package->basePath.'/stubs',
            base_path('stubs/comments'),
            'comments-stubs',
        );
}

Publish tagy

Každá deklarácia zaregistruje publish skupinu pod tagom odvodeným od názvu balíka, takže hostiteľská aplikácia publikuje presne to, čo potrebuje:

TagDeklarujePublikuje sa do
<name>-confighasConfigFile()config/<file>.php
<name>-migrationshasMigrations(), hasMigration()database/migrations/<Y_m_d_His>_<migration>.php
<name>-translationshasTranslations()lang/vendor/<name>
<name>-viewshasViews()resources/views/vendor/<namespace>
<name>-routeshasRoutes()routes/<file>
<váš tag>publishesStubs()Cieľ, ktorý odovzdáte
php artisan vendor:publish --tag=comments-config
php artisan vendor:publish --tag=comments-migrations
php artisan vendor:publish --tag=comments-translations
php artisan vendor:publish --tag=comments-views
php artisan vendor:publish --tag=comments-routes
php artisan vendor:publish --tag=comments-stubs

Konfiguračné súbory

hasConfigFile() zlúči config/<name>.php pod kľúčom <name> a publikuje ho pod tagom <name>-config. Ak chcete dodať inak pomenovaný súbor, odovzdajte holý názov súboru — kľúč sa riadi názvom súboru, tag zostáva <name>-config. Prípona .php je voliteľná:

$package
    ->name('comments')
    ->hasConfigFile()                       // config/comments.php          → config('comments.*')
    ->hasConfigFile('comments-webhooks');   // config/comments-webhooks.php → config('comments-webhooks.*')

// both files publish under the comments-config tag

Views a preklady

hasTranslations() načíta resources/lang v mennom priestore <name> a publikuje ho do lang/vendor/<name>. hasViews() načíta resources/views v mennom priestore <name> — alebo v tom, ktorý odovzdáte, napríklad hasViews('talk') — a publikuje ho do resources/views/vendor/<namespace>.

Routy za konfiguračným prepínačom

hasRoutes() načíta routes/<file> a publikuje ho pod tagom <name>-routes. Voliteľný druhý argument pomenúva boolovský konfiguračný kľúč, ktorý sa číta prísne ako Config::boolean() — hostiteľ tak routy vypne aj z .env: false, 0, '0', 'false', 'off' a 'no' súbor vynechajú (bez ohľadu na veľkosť písmen); true, 1, '1', 'true', 'on', 'yes' alebo nenastavený prepínač — chýbajúci kľúč, null či prázdne '' (KEY= u hostiteľa) — ho načítajú. Čokoľvek iné — 'disabled', 'ture', 2 — vyhodí pri boote InvalidConfigurationException, takže preklep routy nikdy nenačíta:

// configurePackage()
$package
    ->name('comments')
    ->hasConfigFile()
    ->hasRoutes('comments.php', 'comments.routes.enabled');

// config/comments.php
return [
    'routes' => [
        'enabled' => true,   // false — or 'off', '0', 'no' from env — drops the package routes entirely;
                             // a blank value (KEY=) counts as not set and loads them
    ],
];

Aliasy tried

hasFacadeAlias() zaregistruje alias triedy cez AliasLoader Laravelu. Bez konfiguračného kľúča je alias vždy základný názov triedy; s kľúčom rozhoduje hodnota v konfigurácii pri registrácii providera — boolovské hodnoty v štýle env sa rozpoznajú, takže 'off' z .env alias vypne a nevznikne alias s názvom „off“, prázdna hodnota sa počíta ako nenastavená a ponechá základný názov a hodnota, ktorá nie je ani boolovským zápisom, ani neprázdnym reťazcom, vyhodí výnimku:

Hodnota v konfiguráciiVýsledok
Bez konfiguračného kľúčaAlias = základný názov triedy.
true / 1 / '1' / 'true' / 'on' / 'yes'Alias = základný názov triedy.
Kľúč chýba alebo je prázdny ('' / len medzery — nenastavený)Alias = základný názov triedy.
null (výslovne) / false / 0 / '0' / 'false' / 'off' / 'no'Alias sa nezaregistruje.
Akýkoľvek iný neprázdny reťazecTento reťazec je názvom aliasu.
Čokoľvek iné (2, 1.5, pole)Pri registrácii vyhodí InvalidConfigurationException.
// configurePackage()
$package
    ->name('comments')
    ->hasConfigFile()
    ->hasFacadeAlias(Comments::class, 'comments.alias');

// config/comments.php
return [
    'alias' => true,          // registers the alias "Comments"
    // 'alias' => 'Talk',     // registers the alias "Talk" instead
    // 'alias' => false,      // registers no alias — as do null, 'off', '0' and 'no'
    // 'alias' => '',         // blank counts as not set — registers "Comments"
    // 'alias' => 2,          // throws InvalidConfigurationException at register time
];

Príkaz about

contributesToAbout() pridá do php artisan about sekciu pomenovanú podľa balíka (name() s veľkým začiatočným písmenom). Bez callbacku zobrazí názov balíka; pre viac údajov odovzdajte closure, ktorá vracia dvojice popis/hodnota. Closure sa spúšťa pri vykreslení príkazu — všetko citlivé preto maskujte:

use Illuminate\Support\Str;

$package
    ->name('comments')
    ->contributesToAbout();   // section "Comments" → Package: comments

$package
    ->name('comments')
    ->contributesToAbout(static fn (): array => [
        'Package' => 'comments',
        'Key type' => (string) config('comments.key_type'),
        'API key' => Str::mask((string) config('comments.api_key'), '*', 7),   // never render a raw secret
    ]);
php artisan about

Ľubovoľné stuby

publishesStubs() je únikový východ pre súbory, ktoré nezapadajú do žiadneho iného pomocníka — publikuje zdrojovú cestu do cieľovej pod tagom, ktorý si zvolíte:

$package
    ->name('comments')
    ->publishesStubs(
        $package->basePath.'/stubs',   // source (the base path is already resolved here)
        base_path('stubs/comments'),   // destination in the host
        'comments-stubs',              // your tag
    );

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.