Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Çalıştığım projede domain bazlı ayarların değişmesi gerekiyordu web request zamanı bu çok kolaydı lakin console da sorunlar yaşamaya başladım çözümü de Kernel üzerinden şöyle yaptım.

<?php

namespace App\Console;

use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\ArgvInput;

trait DomainOption
{

    public function bootstrap()
    {
        parent::bootstrap();
        $this->app['config']->set('app.domain', $this->getDomainArgvInput());
    }

    /**
     * @return \Illuminate\Console\Application
     */
    protected function getArtisan()
    {
        $artisan = parent::getArtisan();
        if (!$artisan->getDefinition()->hasOption('--domain')) {
            $artisan->getDefinition()
                ->addOption(
                    new InputOption(
                        '--domain',
                        '-d',
                        InputOption::VALUE_OPTIONAL,
                        'Set APP Domain run time'
                    )
                );
        }

        return $artisan;
    }

    private function getDomainArgvInput()
    {
        $input = new ArgvInput();
        return $input->getParameterOption('--domain', null) ?? $input->getParameterOption('-d', null);
    }
}

App\Console\Kernel

class Kernel extends ConsoleKernel
{
    use DomainOption;
}

Şimdi console dan kullanalım.

php artisan cache:clear -d office

    TheHasanov php artisan cache:clear -d office bu komut içerisinde peki -d özelliğini nasıl kullandınız? Yoksa sadece örnek mi vermek istediniz?

      mgsmus
      -d --domain= kısaltması
      gerekli düzenleme yaptım
      ben kendi projemde mysql database değiştirmek, her domain için farklı config cache tutmak gibi farklı çözümlerde kullaniyorum bu metodu

      getArtisan() overwrite etme sebebimiz "option does not exist" hatasını önlemek