master

laravel/framework

Last updated at: 29/12/2023 09:26

HasParameters.php

TLDR

This file is located at src/Illuminate/Console/Concerns/HasParameters.php and contains a trait called HasParameters. The trait provides methods for specifying command arguments and options.

Methods

specifyParameters

This method is used to specify the arguments and options on the command. It loops through the arguments and options defined in the getArguments and getOptions methods and adds them to the command.

getArguments

This method returns an empty array. It can be overridden in classes that use the HasParameters trait to define the console command arguments.

getOptions

This method returns an empty array. It can be overridden in classes that use the HasParameters trait to define the console command options.

<?php

namespace Illuminate\Console\Concerns;

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

trait HasParameters
{
    /**
     * Specify the arguments and options on the command.
     *
     * @return void
     */
    protected function specifyParameters()
    {
        // We will loop through all of the arguments and options for the command and
        // set them all on the base command instance. This specifies what can get
        // passed into these commands as "parameters" to control the execution.
        foreach ($this->getArguments() as $arguments) {
            if ($arguments instanceof InputArgument) {
                $this->getDefinition()->addArgument($arguments);
            } else {
                $this->addArgument(...$arguments);
            }
        }

        foreach ($this->getOptions() as $options) {
            if ($options instanceof InputOption) {
                $this->getDefinition()->addOption($options);
            } else {
                $this->addOption(...$options);
            }
        }
    }

    /**
     * Get the console command arguments.
     *
     * @return array
     */
    protected function getArguments()
    {
        return [];
    }

    /**
     * Get the console command options.
     *
     * @return array
     */
    protected function getOptions()
    {
        return [];
    }
}