source: pro-violet-viettel/sourcecode/application/libraries/Doctrine/Symfony/Component/Console/Input/InputArgument.php @ 345

Last change on this file since 345 was 345, checked in by quyenla, 11 years ago

collaborator page

File size: 3.2 KB
Line 
1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Console\Input;
13
14/**
15 * Represents a command line argument.
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 *
19 * @api
20 */
21class InputArgument
22{
23    const REQUIRED = 1;
24    const OPTIONAL = 2;
25    const IS_ARRAY = 4;
26
27    private $name;
28    private $mode;
29    private $default;
30    private $description;
31
32    /**
33     * Constructor.
34     *
35     * @param string  $name        The argument name
36     * @param integer $mode        The argument mode: self::REQUIRED or self::OPTIONAL
37     * @param string  $description A description text
38     * @param mixed   $default     The default value (for self::OPTIONAL mode only)
39     *
40     * @throws \InvalidArgumentException When argument mode is not valid
41     *
42     * @api
43     */
44    public function __construct($name, $mode = null, $description = '', $default = null)
45    {
46        if (null === $mode) {
47            $mode = self::OPTIONAL;
48        } else if (is_string($mode) || $mode > 7) {
49            throw new \InvalidArgumentException(sprintf('Argument mode "%s" is not valid.', $mode));
50        }
51
52        $this->name        = $name;
53        $this->mode        = $mode;
54        $this->description = $description;
55
56        $this->setDefault($default);
57    }
58
59    /**
60     * Returns the argument name.
61     *
62     * @return string The argument name
63     */
64    public function getName()
65    {
66        return $this->name;
67    }
68
69    /**
70     * Returns true if the argument is required.
71     *
72     * @return Boolean true if parameter mode is self::REQUIRED, false otherwise
73     */
74    public function isRequired()
75    {
76        return self::REQUIRED === (self::REQUIRED & $this->mode);
77    }
78
79    /**
80     * Returns true if the argument can take multiple values.
81     *
82     * @return Boolean true if mode is self::IS_ARRAY, false otherwise
83     */
84    public function isArray()
85    {
86        return self::IS_ARRAY === (self::IS_ARRAY & $this->mode);
87    }
88
89    /**
90     * Sets the default value.
91     *
92     * @param mixed $default The default value
93     *
94     * @throws \LogicException When incorrect default value is given
95     */
96    public function setDefault($default = null)
97    {
98        if (self::REQUIRED === $this->mode && null !== $default) {
99            throw new \LogicException('Cannot set a default value except for Parameter::OPTIONAL mode.');
100        }
101
102        if ($this->isArray()) {
103            if (null === $default) {
104                $default = array();
105            } else if (!is_array($default)) {
106                throw new \LogicException('A default value for an array argument must be an array.');
107            }
108        }
109
110        $this->default = $default;
111    }
112
113    /**
114     * Returns the default value.
115     *
116     * @return mixed The default value
117     */
118    public function getDefault()
119    {
120        return $this->default;
121    }
122
123    /**
124     * Returns the description text.
125     *
126     * @return string The description text
127     */
128    public function getDescription()
129    {
130        return $this->description;
131    }
132}
Note: See TracBrowser for help on using the repository browser.