0 追蹤者

類別 yii\console\Request

繼承關係yii\console\Request » yii\base\Request » yii\base\Component » yii\base\BaseObject
實作yii\base\Configurable
自版本起可用2.0
原始碼 https://github.com/yiisoft/yii2/blob/master/framework/console/Request.php

console Request 代表主控台應用程式的環境資訊。

它是 PHP $_SERVER 變數的封裝器,該變數保存了關於當前運行的 PHP 腳本以及給它的命令行參數的資訊。

公開屬性

隱藏繼承的屬性

屬性 類型 描述 定義於
$behaviors yii\base\Behavior[] 附加到此組件的行為列表。 yii\base\Component
$isConsoleRequest boolean 指示當前請求是否通過主控台發出的值。 yii\base\Request
$params array 命令行參數。 yii\console\Request
$scriptFile string 入口腳本檔案路徑(使用 realpath() 處理)。 yii\base\Request

公開方法

隱藏繼承的方法

方法 描述 定義於
__call() 調用不是類別方法的指定名稱方法。 yii\base\Component
__clone() 在通過克隆現有對象創建對象後調用此方法。 yii\base\Component
__construct() 建構子。 yii\base\BaseObject
__get() 返回組件屬性的值。 yii\base\Component
__isset() 檢查屬性是否已設置,即已定義且不為 null。 yii\base\Component
__set() 設置組件屬性的值。 yii\base\Component
__unset() 將組件屬性設置為 null。 yii\base\Component
attachBehavior() 將行為附加到此組件。 yii\base\Component
attachBehaviors() 將行為列表附加到組件。 yii\base\Component
behaviors() 返回此組件應表現為的行為列表。 yii\base\Component
canGetProperty() 返回一個值,指示是否可以讀取屬性。 yii\base\Component
canSetProperty() 返回一個值,指示是否可以設置屬性。 yii\base\Component
className() 返回此類別的完全限定名稱。 yii\base\BaseObject
detachBehavior() 從組件中分離行為。 yii\base\Component
detachBehaviors() 從組件中分離所有行為。 yii\base\Component
ensureBehaviors() 確保在 behaviors() 中宣告的行為已附加到此組件。 yii\base\Component
getBehavior() 返回指定的行為對象。 yii\base\Component
getBehaviors() 返回附加到此組件的所有行為。 yii\base\Component
getIsConsoleRequest() 返回一個值,指示當前請求是否通過命令行發出。 yii\base\Request
getParams() 返回命令行參數。 yii\console\Request
getScriptFile() 返回入口腳本檔案路徑。 yii\base\Request
hasEventHandlers() 返回一個值,指示是否有名稱事件附加任何處理程序。 yii\base\Component
hasMethod() 返回一個值,指示是否定義了方法。 yii\base\Component
hasProperty() 返回一個值,指示是否為此組件定義了屬性。 yii\base\Component
init() 初始化對象。 yii\base\BaseObject
off() 從此組件中分離現有的事件處理程序。 yii\base\Component
on() 將事件處理程序附加到事件。 yii\base\Component
resolve() 將當前請求解析為路由和相關參數。 yii\console\Request
setIsConsoleRequest() 設置指示當前請求是否通過命令行發出的值。 yii\base\Request
setParams() 設置命令行參數。 yii\console\Request
setScriptFile() 設置入口腳本檔案路徑。 yii\base\Request
trigger() 觸發一個事件。 yii\base\Component

屬性詳細資訊

隱藏繼承的屬性

$params 公開屬性

命令行參數。它不包含入口腳本名稱。

public array $params null

方法詳細資訊

隱藏繼承的方法

__call() 公開方法

定義於: yii\base\Component::__call()

調用不是類別方法的指定名稱方法。

此方法將會檢查是否有任何附加的行為 (behavior) 具有指定名稱的方法,並在可用的情況下執行它。

請勿直接呼叫此方法,因為它是 PHP 的魔術方法 (magic method),當調用未知方法時會被隱式地呼叫。

public mixed __call ( $name, $params )
$name string

方法名稱

$params array

方法參數

回傳 mixed

方法回傳值

拋出 yii\base\UnknownMethodException

當呼叫未知方法時

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public 方法

定義於: yii\base\Component::__clone()

在通過克隆現有對象創建對象後調用此方法。

它會移除所有行為 (behavior),因為這些行為是附加到舊的物件上的。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public 方法

定義於: yii\base\BaseObject::__construct()

建構子。

預設的實作會做兩件事

  • 使用給定的設定 $config 初始化物件。
  • 呼叫 init()

如果這個方法在子類別中被覆寫 (override),建議

  • 建構子的最後一個參數是一個設定陣列 (configuration array),就像這裡的 $config 一樣。
  • 在建構子的結尾呼叫父類別的實作。
public void __construct ( $config = [] )
$config array

將用於初始化物件屬性的名稱-值 (name-value) 配對

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public 方法

定義於: yii\base\Component::__get()

返回組件屬性的值。

此方法將會依照以下順序檢查並採取相應的動作

  • 由 getter 定義的屬性:回傳 getter 的結果
  • 行為 (behavior) 的屬性:回傳行為的屬性值

請勿直接呼叫此方法,因為它是 PHP 的魔術方法 (magic method),當執行 $value = $component->property; 時會被隱式地呼叫。

另請參閱 __set()

public mixed __get ( $name )
$name string

屬性名稱

回傳 mixed

屬性值或行為 (behavior) 屬性的值

拋出 yii\base\UnknownPropertyException

如果屬性未定義

拋出 yii\base\InvalidCallException

如果屬性為唯寫。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public 方法

定義於: yii\base\Component::__isset()

檢查屬性是否已設置,即已定義且不為 null。

此方法將會依照以下順序檢查並採取相應的動作

  • 由 setter 定義的屬性:回傳屬性是否已設定
  • 行為 (behavior) 的屬性:回傳屬性是否已設定
  • 對於不存在的屬性回傳 false

請勿直接呼叫此方法,因為它是 PHP 的魔術方法 (magic method),當執行 isset($component->property) 時會被隱式地呼叫。

另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

屬性名稱或事件名稱

回傳 boolean

指定的屬性是否已設定

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public 方法

定義於: yii\base\Component::__set()

設置組件屬性的值。

此方法將會依照以下順序檢查並採取相應的動作

  • 由 setter 定義的屬性:設定屬性值
  • 格式為 "on xyz" 的事件:將處理器附加到 "xyz" 事件
  • 格式為 "as xyz" 的行為 (behavior):附加名為 "xyz" 的行為
  • 行為 (behavior) 的屬性:設定行為的屬性值

請勿直接呼叫此方法,因為它是 PHP 的魔術方法 (magic method),當執行 $component->property = $value; 時會被隱式地呼叫。

另請參閱 __get()

public void __set ( $name, $value )
$name string

屬性名稱或事件名稱

$value mixed

屬性值

拋出 yii\base\UnknownPropertyException

如果屬性未定義

拋出 yii\base\InvalidCallException

如果屬性為唯讀。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public 方法

定義於: yii\base\Component::__unset()

將組件屬性設置為 null。

此方法將會依照以下順序檢查並採取相應的動作

  • 由 setter 定義的屬性:將屬性值設定為 null
  • 行為 (behavior) 的屬性:將屬性值設定為 null

請勿直接呼叫此方法,因為它是 PHP 的魔術方法 (magic method),當執行 unset($component->property) 時會被隱式地呼叫。

另請參閱 https://php.dev.org.tw/manual/en/function.unset.php

public void __unset ( $name )
$name string

屬性名稱

拋出 yii\base\InvalidCallException

如果屬性為唯讀。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
attachBehavior() public 方法

定義於: yii\base\Component::attachBehavior()

將行為附加到此組件。

此方法將會根據給定的設定建立行為 (behavior) 物件。 之後,將會呼叫 yii\base\Behavior::attach() 方法將行為物件附加到此元件。

另請參閱 detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

行為 (behavior) 的名稱。

$behavior string|array|yii\base\Behavior

行為設定。 這可以是下列其中之一

回傳 yii\base\Behavior

行為物件

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public 方法

定義於: yii\base\Component::attachBehaviors()

將行為列表附加到組件。

每個行為 (behavior) 都以其名稱索引,並且應該是一個 yii\base\Behavior 物件、一個指定行為類別的字串,或是一個用於建立行為的設定陣列。

另請參閱 attachBehavior()

public void attachBehaviors ( $behaviors )
$behaviors array

要附加到元件的行為 (behavior) 列表

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() public 方法

定義於: yii\base\Component::behaviors()

返回此組件應表現為的行為列表。

子類別可以覆寫 (override) 這個方法,以指定它們想要表現為哪些行為 (behavior)。

此方法的回傳值應該是一個行為 (behavior) 物件或設定的陣列,以行為名稱作為索引。 行為設定可以是一個指定行為類別的字串,或是一個具有以下結構的陣列

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

請注意,行為類別必須繼承自 yii\base\Behavior。 行為可以使用名稱或匿名方式附加。 當使用名稱作為陣列鍵時,可以使用此名稱稍後使用 getBehavior() 檢索行為,或使用 detachBehavior() 分離行為。 匿名行為無法檢索或分離。

在此方法中宣告的行為 (behavior) 將會自動 (依需求) 附加到元件。

public array behaviors ( )
回傳 array

行為 (behavior) 設定。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public 方法

定義於: yii\base\Component::canGetProperty()

返回一個值,指示是否可以讀取屬性。

如果符合以下條件,則可以讀取屬性

  • 類別具有與指定名稱關聯的 getter 方法 (在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數 (當 $checkVars 為 true 時);
  • 附加的行為 (behavior) 具有給定名稱的可讀屬性 (當 $checkBehaviors 為 true 時)。

另請參閱 canSetProperty()

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

$checkBehaviors boolean

是否將行為 (behavior) 的屬性視為此元件的屬性

回傳 boolean

屬性是否可以被讀取

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public 方法

定義於: yii\base\Component::canSetProperty()

返回一個值,指示是否可以設置屬性。

如果符合以下條件,則可以寫入屬性

  • 類別具有與指定名稱關聯的 setter 方法 (在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數 (當 $checkVars 為 true 時);
  • 附加的行為 (behavior) 具有給定名稱的可寫屬性 (當 $checkBehaviors 為 true 時)。

另請參閱 canGetProperty()

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

$checkBehaviors boolean

是否將行為 (behavior) 的屬性視為此元件的屬性

回傳 boolean

屬性是否可以被寫入

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public 靜態方法
自 2.0.14 版本起已過時。 在 PHP >=5.5 上,請改用 ::class

定義於: yii\base\BaseObject::className()

返回此類別的完全限定名稱。

public static string className ( )
回傳 string

此類別的完整限定名稱。

                public static function className()
{
    return get_called_class();
}

            
detachBehavior() public 方法

定義於: yii\base\Component::detachBehavior()

從組件中分離行為。

將會調用行為 (behavior) 的 yii\base\Behavior::detach() 方法。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

行為 (behavior) 的名稱。

回傳 yii\base\Behavior|null

分離的行為 (behavior)。 如果行為不存在,則為 Null。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public 方法

定義於: yii\base\Component::detachBehaviors()

從組件中分離所有行為。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public 方法

定義於: yii\base\Component::ensureBehaviors()

確保在 behaviors() 中宣告的行為已附加到此組件。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
getBehavior() public 方法

定義於: yii\base\Component::getBehavior()

返回指定的行為對象。

public yii\base\Behavior|null getBehavior ( $name )
$name string

行為 (behavior) 名稱

回傳 yii\base\Behavior|null

行為 (behavior) 物件,如果行為不存在則為 null

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public 方法

定義於: yii\base\Component::getBehaviors()

返回附加到此組件的所有行為。

public yii\base\Behavior[] getBehaviors ( )
回傳 yii\base\Behavior[]

附加到此元件的行為 (behavior) 列表

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getIsConsoleRequest() public 方法

定義於: yii\base\Request::getIsConsoleRequest()

返回一個值,指示當前請求是否通過命令行發出。

public boolean getIsConsoleRequest ( )
回傳 boolean

指示目前請求是否透過 console 發出的值

                public function getIsConsoleRequest()
{
    return $this->_isConsoleRequest !== null ? $this->_isConsoleRequest : PHP_SAPI === 'cli';
}

            
getParams() public 方法

返回命令行參數。

public array getParams ( )
回傳 array

命令行參數。它不包含入口腳本名稱。

                public function getParams()
{
    if ($this->_params === null) {
        if (isset($_SERVER['argv'])) {
            $this->_params = $_SERVER['argv'];
            array_shift($this->_params);
        } else {
            $this->_params = [];
        }
    }
    return $this->_params;
}

            
getScriptFile() public 方法

定義於: yii\base\Request::getScriptFile()

返回入口腳本檔案路徑。

public string getScriptFile ( )
回傳 string

進入腳本檔案路徑 (使用 realpath() 處理)

拋出 yii\base\InvalidConfigException

如果無法自動判斷進入腳本檔案路徑。

                public function getScriptFile()
{
    if ($this->_scriptFile === null) {
        if (isset($_SERVER['SCRIPT_FILENAME'])) {
            $this->setScriptFile($_SERVER['SCRIPT_FILENAME']);
        } else {
            throw new InvalidConfigException('Unable to determine the entry script file path.');
        }
    }
    return $this->_scriptFile;
}

            
hasEventHandlers() public 方法

定義於: yii\base\Component::hasEventHandlers()

返回一個值,指示是否有名稱事件附加任何處理程序。

public boolean hasEventHandlers ( $name )
$name string

事件名稱

回傳 boolean

是否有任何處理器附加到事件。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() public 方法

定義於: yii\base\Component::hasMethod()

返回一個值,指示是否定義了方法。

如果符合以下條件,則定義了一個方法

  • 類別具有指定名稱的方法
  • 附加的行為 (behavior) 具有給定名稱的方法 (當 $checkBehaviors 為 true 時)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

屬性名稱

$checkBehaviors boolean

是否將行為 (behavior) 的方法視為此元件的方法

回傳 boolean

方法是否已定義

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public 方法

定義於: yii\base\Component::hasProperty()

返回一個值,指示是否為此組件定義了屬性。

如果符合以下條件,則定義了一個屬性

  • 類別具有與指定名稱關聯的 getter 或 setter 方法 (在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數 (當 $checkVars 為 true 時);
  • 附加的行為 (behavior) 具有給定名稱的屬性 (當 $checkBehaviors 為 true 時)。

另請參閱

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

$checkBehaviors boolean

是否將行為 (behavior) 的屬性視為此元件的屬性

回傳 boolean

屬性是否已定義

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() public 方法

定義於: yii\base\BaseObject::init()

初始化對象。

在物件使用給定的設定初始化之後,此方法會在建構子的結尾被調用。

public void init ( )

                public function init()
{
}

            
off() public 方法

定義於: yii\base\Component::off()

從此組件中分離現有的事件處理程序。

此方法與 on() 的作用相反。

注意:若事件名稱傳遞了萬用字元模式,則只會移除以該萬用字元註冊的處理器,而以符合該萬用字元的純名稱註冊的處理器將會保留。

另請參閱 on()

public boolean off ( $name, $handler null )
$name string

事件名稱

$handler callable|null

要移除的事件處理器。若為 null,則會移除附加到指定事件名稱的所有處理器。

回傳 boolean

若找到並分離處理器

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() public method

定義於: yii\base\Component::on()

將事件處理程序附加到事件。

事件處理器必須是有效的 PHP 回呼。以下是一些範例

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

事件處理器必須使用以下簽名定義:

function ($event)

其中 $event 是一個 yii\base\Event 物件,其中包含與事件相關聯的參數。

自 2.0.14 版本起,您可以將事件名稱指定為萬用字元模式

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

另請參閱 off()

public void on ( $name, $handler, $data null, $append true )
$name string

事件名稱

$handler 可呼叫的

事件處理器

$data mixed

要在觸發事件時傳遞給事件處理器的資料。當調用事件處理器時,可以透過 yii\base\Event::$data 存取此資料。

$append boolean

是否將新的事件處理器附加到現有處理器列表的末尾。若為 false,則新的處理器將插入到現有處理器列表的開頭。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
resolve() public method

將當前請求解析為路由和相關參數。

public array resolve ( )
回傳 array

第一個元素是路由,第二個元素是相關聯的參數。

拋出 yii\console\Exception

當參數錯誤且無法解析時

                public function resolve()
{
    $rawParams = $this->getParams();
    $endOfOptionsFound = false;
    if (isset($rawParams[0])) {
        $route = array_shift($rawParams);
        if ($route === '--') {
            $endOfOptionsFound = true;
            $route = array_shift($rawParams);
        }
    } else {
        $route = '';
    }
    $params = [];
    $prevOption = null;
    foreach ($rawParams as $param) {
        if ($endOfOptionsFound) {
            $params[] = $param;
        } elseif ($param === '--') {
            $endOfOptionsFound = true;
        } elseif (preg_match('/^--([\w-]+)(?:=(.*))?$/', $param, $matches)) {
            $name = $matches[1];
            if (is_numeric(substr($name, 0, 1))) {
                throw new Exception('Parameter "' . $name . '" is not valid');
            }
            if ($name !== Application::OPTION_APPCONFIG) {
                $params[$name] = isset($matches[2]) ? $matches[2] : true;
                $prevOption = &$params[$name];
            }
        } elseif (preg_match('/^-([\w-]+)(?:=(.*))?$/', $param, $matches)) {
            $name = $matches[1];
            if (is_numeric($name)) {
                $params[] = $param;
            } else {
                $params['_aliases'][$name] = isset($matches[2]) ? $matches[2] : true;
                $prevOption = &$params['_aliases'][$name];
            }
        } elseif ($prevOption === true) {
            // `--option value` syntax
            $prevOption = $param;
        } else {
            $params[] = $param;
        }
    }
    return [$route, $params];
}

            
setIsConsoleRequest() public method

定義於: yii\base\Request::setIsConsoleRequest()

設置指示當前請求是否通過命令行發出的值。

public void setIsConsoleRequest ( $value )
$value boolean

指示當前請求是否透過命令列發出的值

                public function setIsConsoleRequest($value)
{
    $this->_isConsoleRequest = $value;
}

            
setParams() public method

設置命令行參數。

public void setParams ( $params )
$params array

命令列引數

                public function setParams($params)
{
    $this->_params = $params;
}

            
setScriptFile() public method

定義於: yii\base\Request::setScriptFile()

設置入口腳本檔案路徑。

通常可以根據 SCRIPT_FILENAME SERVER 變數來判斷入口腳本檔案路徑。但是,對於某些伺服器配置,這可能不正確或不可行。提供此 setter 是為了可以手動指定入口腳本檔案路徑。

public void setScriptFile ( $value )
$value string

入口腳本檔案路徑。這可以是檔案路徑或 路徑別名

拋出 yii\base\InvalidConfigException

如果提供的入口腳本檔案路徑無效。

                public function setScriptFile($value)
{
    $scriptFile = realpath(Yii::getAlias($value));
    if ($scriptFile !== false && is_file($scriptFile)) {
        $this->_scriptFile = $scriptFile;
    } else {
        throw new InvalidConfigException('Unable to determine the entry script file path.');
    }
}

            
trigger() public method

定義於: yii\base\Component::trigger()

觸發一個事件。

此方法表示事件的發生。它會調用事件的所有附加處理器,包括類別層級的處理器。

public void trigger ( $name, yii\base\Event $event null )
$name string

事件名稱

$event yii\base\Event|null

事件實例。若未設定,將會建立預設的 yii\base\Event 物件。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}