0 フォロワー

抽象クラス yii\console\controllers\BaseMigrateController

継承yii\console\controllers\BaseMigrateController » yii\console\Controller » yii\base\Controller » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable, yii\base\ViewContextInterface
サブクラスyii\console\controllers\MigrateController
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/console/controllers/BaseMigrateController.php

BaseMigrateController は、マイグレートコントローラーの基底クラスです。

公開プロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$action yii\base\Action|null 現在実行中のアクション。 yii\base\Controller
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$color boolean|null 出力で ANSI カラーを有効にするかどうか。 yii\console\Controller
$compact boolean コンソール出力をコンパクトにする必要があるかどうかを示します。 yii\console\controllers\BaseMigrateController
$defaultAction string デフォルトのコマンドアクション。 yii\console\controllers\BaseMigrateController
$help boolean 現在のコマンドに関するヘルプ情報を表示するかどうか。 yii\console\Controller
$helpSummary string yii\console\Controller
$id string このコントローラーのID。 yii\base\Controller
$interactive boolean コマンドを対話的に実行するかどうか。 yii\console\Controller
$layout string|null|false このコントローラーのビューに適用するレイアウトの名前。 yii\base\Controller
$migrationNamespaces array マイグレーションクラスを含む名前空間のリスト。 yii\console\controllers\BaseMigrateController
$migrationPath string|array|null マイグレーションクラスを含むディレクトリ。 yii\console\controllers\BaseMigrateController
$module yii\base\Module このコントローラーが属するモジュール。 yii\base\Controller
$modules yii\base\Module[] このコントローラーが配置されているすべての祖先モジュール。 yii\base\Controller
$newFileMode integer|null 新しく生成されたマイグレーションファイルに設定するパーミッション。 yii\console\controllers\BaseMigrateController
$newFileOwnership string|integer|null 新しく生成されたマイグレーションファイルに設定するユーザーおよび/またはグループ所有権。 yii\console\controllers\BaseMigrateController
$passedOptionValues array 渡されたオプションに対応するプロパティ。 yii\console\Controller
$passedOptions array 実行中に渡されたオプションの名前。 yii\console\Controller
$request yii\base\Request|array|string リクエスト。 yii\base\Controller
$response yii\base\Response|array|string レスポンス。 yii\base\Controller
$route string 現在のリクエストのルート(モジュールID、コントローラーID、アクションID)。 yii\base\Controller
$silentExitOnException boolean|null trueの場合、例外が発生した場合、スクリプトは ExitCode::OK で終了します。 yii\console\Controller
$templateFile string 新しいマイグレーションを生成するためのテンプレートファイル。 yii\console\controllers\BaseMigrateController
$uniqueId string モジュールID(存在する場合)がプレフィックスされたコントローラーID。 yii\base\Controller
$view yii\base\View|yii\web\View ビューまたはビューファイルをレンダリングするために使用できるビューオブジェクト。 yii\base\Controller
$viewPath string このコントローラーのビューファイルを含むディレクトリ。 yii\base\Controller

公開メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトをクローンしてオブジェクトを作成した後に呼び出されます。 yii\base\Component
__construct() yii\base\Controller
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているか(つまり、定義されていて null でないか)どうかを確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティを null に設定します。 yii\base\Component
actionCreate() 新しいマイグレーションを作成します。 yii\console\controllers\BaseMigrateController
actionDown() 古いマイグレーションを元に戻すことで、アプリケーションをダウングレードします。 yii\console\controllers\BaseMigrateController
actionFresh() すべてのテーブルと関連する制約を削除します。最初からマイグレーションを開始します。 yii\console\controllers\BaseMigrateController
actionHistory() マイグレーション履歴を表示します。 yii\console\controllers\BaseMigrateController
actionMark() マイグレーション履歴を指定されたバージョンに変更します。 yii\console\controllers\BaseMigrateController
actionNew() 未適用の新しいマイグレーションを表示します。 yii\console\controllers\BaseMigrateController
actionRedo() 最後のいくつかのマイグレーションをやり直します。 yii\console\controllers\BaseMigrateController
actionTo() 指定されたバージョンまでアップグレードまたはダウングレードします。 yii\console\controllers\BaseMigrateController
actionUp() 新しいマイグレーションを適用することで、アプリケーションをアップグレードします。 yii\console\controllers\BaseMigrateController
actions() コントローラーの外部アクションを宣言します。 yii\base\Controller
afterAction() このメソッドは、アクションの実行直後に呼び出されます。 yii\base\Controller
ansiFormat() ANSI コードで文字列をフォーマットします。 yii\console\Controller
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
beforeAction() このメソッドは、(可能なすべてのフィルターの後)アクションが実行される直前に呼び出されます。$migrationPath の存在を確認します。 yii\console\controllers\BaseMigrateController
behaviors() このコンポーネントが動作する必要があるビヘイビアのリストを返します。 yii\base\Component
bindActionParams() パラメーターをアクションにバインドします。 yii\console\Controller
canGetProperty() プロパティが読み取り可能かどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティが設定可能かどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
confirm() y または n を入力して確認を求めます。 yii\console\Controller
createAction() 指定されたアクション ID に基づいてアクションを作成します。 yii\base\Controller
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
findLayoutFile() 適用可能なレイアウトファイルを検索します。 yii\base\Controller
getActionArgsHelp() アクションの匿名引数に関するヘルプ情報を返します。 yii\console\Controller
getActionHelp() 指定されたアクションの詳細なヘルプ情報を返します。 yii\console\Controller
getActionHelpSummary() 指定されたアクションを説明する1行の短い要約を返します。 yii\console\Controller
getActionOptionsHelp() アクションのオプションに関するヘルプ情報を返します。 yii\console\Controller
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされたすべてのビヘイビアを返します。 yii\base\Component
getHelp() このコントローラーのヘルプ情報を返します。 yii\console\Controller
getHelpSummary() このコントローラーを説明する1行の短い要約を返します。 yii\console\Controller
getModules() このコントローラーのすべての祖先モジュールを返します。 yii\base\Controller
getOptionValues() アクション ID のオプションに対応するプロパティを返します。子クラスは、可能なプロパティを指定するためにこのメソッドをオーバーライドできます。 yii\console\Controller
getPassedOptionValues() 渡されたオプションに対応するプロパティを返します。 yii\console\Controller
getPassedOptions() 実行中に渡された有効なオプションの名前を返します。 yii\console\Controller
getRoute() 現在のリクエストのルートを返します。 yii\base\Controller
getUniqueId() コントローラーの一意の ID を返します。 yii\base\Controller
getView() ビューまたはビューファイルのレンダリングに使用できるビューオブジェクトを返します。 yii\base\Controller
getViewPath() このコントローラーのビューファイルを含むディレクトリを返します。 yii\base\Controller
hasEventHandlers() 指定された名前のイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\base\Controller
isColorEnabled() ANSI カラーが有効かどうかを示す値を返します。 yii\console\Controller
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントハンドラーをイベントにアタッチします。 yii\base\Component
optionAliases() オプションのエイリアス名を返します。 yii\console\Controller
options() アクション(id)の有効なオプションの名前を返します。オプションには、名前がオプション名であるパブリックメンバー変数が存在する必要があります。 yii\console\controllers\BaseMigrateController
prompt() ユーザーに入力を促し、それを検証します。 yii\console\Controller
render() ビューをレンダリングし、利用可能な場合はレイアウトを適用します。 yii\base\Controller
renderContent() レイアウトを適用して静的文字列をレンダリングします。 yii\base\Controller
renderFile() ビューファイルをレンダリングします。 yii\base\Controller
renderPartial() レイアウトを適用せずにビューをレンダリングします。 yii\base\Controller
run() ルートで指定されたリクエストを実行します。 yii\base\Controller
runAction() 指定されたアクション ID とパラメーターを使用してアクションを実行します。 yii\console\Controller
select() ユーザーに選択肢を与えます。入力として '?' を与えると、選択肢とその説明のリストが表示されます。 yii\console\Controller
setView() このコントローラーで使用するビューオブジェクトを設定します。 yii\base\Controller
setViewPath() ビューファイルを含むディレクトリを設定します。 yii\base\Controller
stderr() 文字列を STDERR に出力します。 yii\console\Controller
stdout() 文字列を STDOUT に出力します。 yii\console\Controller
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
addMigrationHistory() 新しいマイグレーションエントリを履歴に追加します。 yii\console\controllers\BaseMigrateController
bindInjectedParams() アクションメソッドシグネチャの型と名前に基づいてパラメーターを入力します。 yii\base\Controller
createMigration() 新しいマイグレーションインスタンスを作成します。 yii\console\controllers\BaseMigrateController
generateMigrationSourceCode() 新しいマイグレーションソース PHP コードを生成します。 yii\console\controllers\BaseMigrateController
getActionMethodReflection() yii\console\Controller
getMigrationHistory() マイグレーション履歴を返します。 yii\console\controllers\BaseMigrateController
getMigrationNameLimit() マイグレーションの最大名前長を返します。 yii\console\controllers\BaseMigrateController
getNewMigrations() 適用されていないマイグレーションを返します。 yii\console\controllers\BaseMigrateController
includeMigrationFile() 指定されたマイグレーションクラス名のマイグレーションファイルを含めます。 yii\console\controllers\BaseMigrateController
migrateDown() 指定されたマイグレーションクラスでダウングレードします。 yii\console\controllers\BaseMigrateController
migrateToTime() 過去の指定された適用時間にマイグレートします。 yii\console\controllers\BaseMigrateController
migrateToVersion() 特定のバージョンにマイグレートします。 yii\console\controllers\BaseMigrateController
migrateUp() 指定されたマイグレーションクラスでアップグレードします。 yii\console\controllers\BaseMigrateController
parseDocCommentDetail() docblock から詳細な説明を返します。 yii\console\Controller
parseDocCommentSummary() docblock の最初の行を返します。 yii\console\Controller
parseDocCommentTags() コメントブロックをタグに解析します。 yii\console\Controller
removeMigrationHistory() 既存のマイグレーションを履歴から削除します。 yii\console\controllers\BaseMigrateController
truncateDatabase() データベースを切り捨てます。 yii\console\controllers\BaseMigrateController

イベント

継承されたイベントを非表示

イベント 説明 定義元
EVENT_AFTER_ACTION yii\base\ActionEvent コントローラーアクションの実行直後に発生するイベント。 yii\base\Controller
EVENT_BEFORE_ACTION yii\base\ActionEvent コントローラーアクションの実行直前に発生するイベント。 yii\base\Controller

定数

継承された定数を非表示

定数 説明 定義元
BASE_MIGRATION 'm000000_000000_base' マイグレーション履歴全体の始まりを示すダミーマイグレーションの名前。 yii\console\controllers\BaseMigrateController
EXIT_CODE_ERROR 1 2.0.13 から非推奨。代わりに yii\console\ExitCode::UNSPECIFIED_ERROR を使用してください。 yii\console\Controller
EXIT_CODE_NORMAL 0 2.0.13 から非推奨。代わりに yii\console\ExitCode::OK を使用してください。 yii\console\Controller

プロパティの詳細

継承されたプロパティを非表示

$compact パブリックプロパティ (バージョン 2.0.13 以降で利用可能)

コンソール出力を圧縮するかどうかを示します。これが true に設定されている場合、マイグレーション内で実行された個々のコマンドはコンソールに出力されません。デフォルトは false です。つまり、デフォルトでは出力は完全に詳細です。

public boolean $compact false
$defaultAction パブリックプロパティ

デフォルトのコマンドアクション。

public string $defaultAction 'up'
$migrationNamespaces パブリックプロパティ (バージョン 2.0.10 以降で利用可能)

マイグレーションクラスを含む名前空間のリスト。

マイグレーションの名前空間は、@ で始まる場合、パスエイリアスとして解決できる必要があります。例えば、名前空間 app\migrations を指定した場合、コード Yii::getAlias('@app/migrations') は、この名前空間が参照するディレクトリへのファイルパスを返すことができる必要があります。これは、Yii の オートローディング規約に対応しています。

[
    'app\migrations',
    'some\extension\migrations',
]

$migrationPath も参照してください。

$migrationPath パブリックプロパティ

マイグレーションクラスを含むディレクトリ。パスエイリアスまたはディレクトリパスのいずれかです。

このパスにあるマイグレーションクラスは、名前空間なしで宣言する必要があります。名前空間付きのマイグレーションを使用する場合は、$migrationNamespaces プロパティを使用してください。

$migrationNamespaces を設定した場合、名前空間のないマイグレーションの使用を無効にするために、このフィールドを null に設定することができます。

バージョン 2.0.12 以降では、ロードするマイグレーションを検索するマイグレーションパスの配列を指定することもできます。これは主に、名前空間のないマイグレーションを提供する古い拡張機能をサポートし、既存のマイグレーションを維持しながら、名前空間付きマイグレーションの新機能を採用するのに役立ちます。

一般的に、異なる場所からマイグレーションをロードする場合は、$migrationNamespaces が望ましいソリューションです。マイグレーション名には履歴のマイグレーションの起源が含まれており、複数のマイグレーションパスを使用する場合はそうではありません。

$migrationNamespaces も参照してください。

public string|array|null $migrationPath = [
    
'@app/migrations',
]
$newFileMode public プロパティ (バージョン 2.0.43 から利用可能)

新しく生成されるマイグレーションファイルに設定されるパーミッション。この値は PHP の chmod() 関数で使用されます。umask は適用されません。設定されていない場合、パーミッションは現在の環境によって決定されます。

public integer|null $newFileMode null
$newFileOwnership public プロパティ (バージョン 2.0.43 から利用可能)

新しく生成されるマイグレーションファイルに設定されるユーザーおよび/またはグループの所有権。設定されていない場合、所有権は現在の環境によって決定されます。

参照: yii\helpers\FileHelper::changeOwnership().

$templateFile public プロパティ

新しいマイグレーションを生成するためのテンプレートファイル。これは、パスエイリアス(例: "@app/migrations/template.php")またはファイルパスのいずれかです。

public string $templateFile null

メソッド詳細

継承されたメソッドを非表示

__call() public メソッド

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

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアに指定された名前のメソッドがあるかどうかを確認し、利用可能な場合は実行します。

このメソッドは、未知のメソッドが呼び出されたときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

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

メソッド名

$params array

メソッドのパラメーター

return mixed

メソッドの戻り値

throws 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()

このメソッドは、既存のオブジェクトをクローンしてオブジェクトを作成した後に呼び出されます。

古いオブジェクトにアタッチされているため、すべてのビヘイビアを削除します。

public void __clone ( )

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

            
__construct() public メソッド
public void __construct ( $id, $module, $config = [] )
$id string

このコントローラーのID。

$module yii\base\Module

このコントローラーが属するモジュール。

$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア。

                public function __construct($id, $module, $config = [])
{
    $this->id = $id;
    $this->module = $module;
    parent::__construct($config);
}

            
__get() public メソッド

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

コンポーネントプロパティの値を返します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • ゲッターによって定義されたプロパティ:ゲッターの結果を返します
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を返します

$value = $component->property; を実行するときに暗黙的に呼び出される PHP マジックメソッドであるため、このメソッドを直接呼び出さないでください。

参照: __set()

public mixed __get ( $name )
$name string

プロパティ名

return mixed

プロパティの値またはビヘイビアのプロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws 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 でないか)どうかを確認します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターによって定義されたプロパティ:プロパティが設定されているかどうかを返します
  • ビヘイビアのプロパティ:プロパティが設定されているかどうかを返します
  • 存在しないプロパティの場合は false を返します

isset($component->property) を実行するときに暗黙的に呼び出されるPHPのマジックメソッドであるため、このメソッドを直接呼び出さないでください。

参照: https://www.php.net/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

return 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()

コンポーネントプロパティの値を設定します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターによって定義されたプロパティ:プロパティ値を設定します
  • "on xyz" の形式のイベント:ハンドラーを "xyz" イベントにアタッチします
  • "as xyz" の形式のビヘイビア: "xyz" という名前のビヘイビアをアタッチします
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を設定します。

このメソッドは、$component->property = $value; を実行したときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

__get() も参照してください。

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

プロパティ名またはイベント名

$value mixed

プロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws 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 に設定します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターによって定義されたプロパティ:プロパティ値をnullに設定します。
  • ビヘイビアのプロパティ:プロパティ値をnullに設定します。

このメソッドは、unset($component->property) を実行したときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

https://www.php.net/manual/en/function.unset.php も参照してください。

public void __unset ( $name )
$name string

プロパティ名

throws 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);
}

            
actionCreate() public メソッド

新しいマイグレーションを作成します。

このコマンドは、利用可能なマイグレーションテンプレートを使用して新しいマイグレーションを作成します。このコマンドを使用した後、開発者は作成されたマイグレーションのスケルトンを、実際のマイグレーションロジックを記述して修正する必要があります。

yii migrate/create create_user_table

名前空間付きのマイグレーションを生成するには、マイグレーションの名前の前に名前空間を指定する必要があります。バックスラッシュ (\) は通常、シェルでは特殊文字と見なされるため、シェルのエラーや不正な動作を避けるために適切にエスケープする必要があることに注意してください。例:

yii migrate/create app\\migrations\\createUserTable

$migrationPath が設定されておらず、名前空間が指定されていない場合、$migrationNamespaces の最初のエントリが使用されます。

public void actionCreate ( $name )
$name string

新しいマイグレーションの名前。これは、文字、数字、アンダースコア、および/またはバックスラッシュのみを含む必要があります。

注意:マイグレーション名が、例えば create_xxx や drop_xxx のような特別な形式の場合、生成されたマイグレーションファイルには追加のコードが含まれます。この場合、テーブルの作成/削除のためのコードが含まれます。

throws yii\console\Exception

name引数が無効な場合。

                public function actionCreate($name)
{
    if (!preg_match('/^[\w\\\\]+$/', $name)) {
        throw new Exception('The migration name should contain letters, digits, underscore and/or backslash characters only.');
    }
    list($namespace, $className) = $this->generateClassName($name);
    // Abort if name is too long
    $nameLimit = $this->getMigrationNameLimit();
    if ($nameLimit !== null && strlen($className) > $nameLimit) {
        throw new Exception('The migration name is too long.');
    }
    $migrationPath = $this->findMigrationPath($namespace);
    $file = $migrationPath . DIRECTORY_SEPARATOR . $className . '.php';
    if ($this->confirm("Create new migration '$file'?")) {
        $content = $this->generateMigrationSourceCode([
            'name' => $name,
            'className' => $className,
            'namespace' => $namespace,
        ]);
        FileHelper::createDirectory($migrationPath);
        if (file_put_contents($file, $content, LOCK_EX) === false) {
            $this->stdout("Failed to create new migration.\n", Console::FG_RED);
            return ExitCode::IOERR;
        }
        FileHelper::changeOwnership($file, $this->newFileOwnership, $this->newFileMode);
        $this->stdout("New migration created successfully.\n", Console::FG_GREEN);
    }
    return ExitCode::OK;
}

            
actionDown() public メソッド

古いマイグレーションを元に戻すことで、アプリケーションをダウングレードします。

例えば、

yii migrate/down     # revert the last migration
yii migrate/down 3   # revert the last 3 migrations
yii migrate/down all # revert all migrations
public integer actionDown ( $limit 1 )
$limit integer|string

リバートするマイグレーションの数。デフォルトは1で、最後に適用されたマイグレーションがリバートされることを意味します。値が "all" の場合、すべてのマイグレーションがリバートされます。

return integer

アクション実行のステータス。0は正常、その他の値は異常を意味します。

throws yii\console\Exception

指定されたステップ数が1未満の場合。

                public function actionDown($limit = 1)
{
    if ($limit === 'all') {
        $limit = null;
    } else {
        $limit = (int) $limit;
        if ($limit < 1) {
            throw new Exception('The step argument must be greater than 0.');
        }
    }
    $migrations = $this->getMigrationHistory($limit);
    if (empty($migrations)) {
        $this->stdout("No migration has been done before.\n", Console::FG_YELLOW);
        return ExitCode::OK;
    }
    $migrations = array_keys($migrations);
    $n = count($migrations);
    $this->stdout("Total $n " . ($n === 1 ? 'migration' : 'migrations') . " to be reverted:\n", Console::FG_YELLOW);
    foreach ($migrations as $migration) {
        $this->stdout("\t$migration\n");
    }
    $this->stdout("\n");
    $reverted = 0;
    if ($this->confirm('Revert the above ' . ($n === 1 ? 'migration' : 'migrations') . '?')) {
        foreach ($migrations as $migration) {
            if (!$this->migrateDown($migration)) {
                $this->stdout("\n$reverted from $n " . ($reverted === 1 ? 'migration was' : 'migrations were') . " reverted.\n", Console::FG_RED);
                $this->stdout("\nMigration failed. The rest of the migrations are canceled.\n", Console::FG_RED);
                return ExitCode::UNSPECIFIED_ERROR;
            }
            $reverted++;
        }
        $this->stdout("\n$n " . ($n === 1 ? 'migration was' : 'migrations were') . " reverted.\n", Console::FG_GREEN);
        $this->stdout("\nMigrated down successfully.\n", Console::FG_GREEN);
    }
    return ExitCode::OK;
}

            
actionFresh() public メソッド (バージョン2.0.13から利用可能)

すべてのテーブルと関連する制約を削除します。最初からマイグレーションを開始します。

yii migrate/fresh
public void actionFresh ( )

                public function actionFresh()
{
    if (YII_ENV_PROD) {
        $this->stdout("YII_ENV is set to 'prod'.\nRefreshing migrations is not possible on production systems.\n");
        return ExitCode::OK;
    }
    if ($this->confirm("Are you sure you want to drop all tables and related constraints and start the migration from the beginning?\nAll data will be lost irreversibly!")) {
        $this->truncateDatabase();
        return $this->actionUp();
    }
    $this->stdout('Action was cancelled by user. Nothing has been performed.');
    return ExitCode::OK;
}

            
actionHistory() public メソッド

マイグレーション履歴を表示します。

このコマンドは、これまでに適用されたマイグレーションのリストを表示します。例えば、

yii migrate/history     # showing the last 10 migrations
yii migrate/history 5   # showing the last 5 migrations
yii migrate/history all # showing the whole history
public void actionHistory ( $limit 10 )
$limit integer|string

表示するマイグレーションの最大数。"all" の場合、マイグレーション履歴全体が表示されます。

throws yii\console\Exception

無効なlimit値が渡された場合

                public function actionHistory($limit = 10)
{
    if ($limit === 'all') {
        $limit = null;
    } else {
        $limit = (int) $limit;
        if ($limit < 1) {
            throw new Exception('The limit must be greater than 0.');
        }
    }
    $migrations = $this->getMigrationHistory($limit);
    if (empty($migrations)) {
        $this->stdout("No migration has been done before.\n", Console::FG_YELLOW);
    } else {
        $n = count($migrations);
        if ($limit > 0) {
            $this->stdout("Showing the last $n applied " . ($n === 1 ? 'migration' : 'migrations') . ":\n", Console::FG_YELLOW);
        } else {
            $this->stdout("Total $n " . ($n === 1 ? 'migration has' : 'migrations have') . " been applied before:\n", Console::FG_YELLOW);
        }
        foreach ($migrations as $version => $time) {
            $this->stdout("\t(" . date('Y-m-d H:i:s', $time) . ') ' . $version . "\n");
        }
    }
    return ExitCode::OK;
}

            
actionMark() public メソッド

マイグレーション履歴を指定されたバージョンに変更します。

実際にはマイグレーションは実行されません。

yii migrate/mark 101129_185401                        # using timestamp
yii migrate/mark m101129_185401_create_user_table     # using full name
yii migrate/mark app\migrations\M101129185401CreateUser # using full namespace name
yii migrate/mark m000000_000000_base # reset the complete migration history
public integer actionMark ( $version )
$version string

マイグレーション履歴をマークする必要があるバージョン。これは、タイムスタンプまたはマイグレーションのフルネームのいずれかになります。マイグレーション履歴をマイグレーションが適用されていない状態に設定するには、名前 m000000_000000_base を指定できます。

return integer

CLI終了コード

throws yii\console\Exception

version引数が無効であるか、バージョンが見つからない場合。

                public function actionMark($version)
{
    $originalVersion = $version;
    if (($namespaceVersion = $this->extractNamespaceMigrationVersion($version)) !== false) {
        $version = $namespaceVersion;
    } elseif (($migrationName = $this->extractMigrationVersion($version)) !== false) {
        $version = $migrationName;
    } elseif ($version !== static::BASE_MIGRATION) {
        throw new Exception("The version argument must be either a timestamp (e.g. 101129_185401)\nor the full name of a migration (e.g. m101129_185401_create_user_table)\nor the full name of a namespaced migration (e.g. app\\migrations\\M101129185401CreateUserTable).");
    }
    // try mark up
    $migrations = $this->getNewMigrations();
    foreach ($migrations as $i => $migration) {
        if (strpos($migration, $version) === 0) {
            if ($this->confirm("Set migration history at $originalVersion?")) {
                for ($j = 0; $j <= $i; ++$j) {
                    $this->addMigrationHistory($migrations[$j]);
                }
                $this->stdout("The migration history is set at $originalVersion.\nNo actual migration was performed.\n", Console::FG_GREEN);
            }
            return ExitCode::OK;
        }
    }
    // try mark down
    $migrations = array_keys($this->getMigrationHistory(null));
    $migrations[] = static::BASE_MIGRATION;
    foreach ($migrations as $i => $migration) {
        if (strpos($migration, $version) === 0) {
            if ($i === 0) {
                $this->stdout("Already at '$originalVersion'. Nothing needs to be done.\n", Console::FG_YELLOW);
            } elseif ($this->confirm("Set migration history at $originalVersion?")) {
                for ($j = 0; $j < $i; ++$j) {
                    $this->removeMigrationHistory($migrations[$j]);
                }
                $this->stdout("The migration history is set at $originalVersion.\nNo actual migration was performed.\n", Console::FG_GREEN);
            }
            return ExitCode::OK;
        }
    }
    throw new Exception("Unable to find the version '$originalVersion'.");
}

            
actionNew() public メソッド

未適用の新しいマイグレーションを表示します。

このコマンドは、適用されていない新しいマイグレーションを表示します。例えば、

yii migrate/new     # showing the first 10 new migrations
yii migrate/new 5   # showing the first 5 new migrations
yii migrate/new all # showing all new migrations
public void actionNew ( $limit 10 )
$limit integer|string

表示する新しいマイグレーションの最大数。all の場合、利用可能なすべての新しいマイグレーションが表示されます。

throws yii\console\Exception

無効なlimit値が渡された場合

                public function actionNew($limit = 10)
{
    if ($limit !== 'all') {
        $limit = (int) $limit;
        if ($limit < 1) {
            throw new Exception('The limit must be greater than 0.');
        }
    }
    $migrations = $this->getNewMigrations();
    if (empty($migrations)) {
        $this->stdout("No new migrations found. Your system is up-to-date.\n", Console::FG_GREEN);
    } else {
        $n = count($migrations);
        if ($limit !== 'all' && $n > $limit) {
            $migrations = array_slice($migrations, 0, $limit);
            $this->stdout("Showing $limit out of $n new " . ($n === 1 ? 'migration' : 'migrations') . ":\n", Console::FG_YELLOW);
        } else {
            $this->stdout("Found $n new " . ($n === 1 ? 'migration' : 'migrations') . ":\n", Console::FG_YELLOW);
        }
        foreach ($migrations as $migration) {
            $this->stdout("\t" . $migration . "\n");
        }
    }
    return ExitCode::OK;
}

            
actionRedo() public メソッド

最後のいくつかのマイグレーションをやり直します。

このコマンドは、指定されたマイグレーションを最初にリバートしてから、再度適用します。例えば、

yii migrate/redo     # redo the last applied migration
yii migrate/redo 3   # redo the last 3 applied migrations
yii migrate/redo all # redo all migrations
public integer actionRedo ( $limit 1 )
$limit integer|string

やり直すマイグレーションの数。デフォルトは1で、最後に適用されたマイグレーションがやり直されることを意味します。"all" の場合、すべてのマイグレーションがやり直されます。

return integer

アクション実行のステータス。0は正常、その他の値は異常を意味します。

throws yii\console\Exception

指定されたステップ数が1未満の場合。

                public function actionRedo($limit = 1)
{
    if ($limit === 'all') {
        $limit = null;
    } else {
        $limit = (int) $limit;
        if ($limit < 1) {
            throw new Exception('The step argument must be greater than 0.');
        }
    }
    $migrations = $this->getMigrationHistory($limit);
    if (empty($migrations)) {
        $this->stdout("No migration has been done before.\n", Console::FG_YELLOW);
        return ExitCode::OK;
    }
    $migrations = array_keys($migrations);
    $n = count($migrations);
    $this->stdout("Total $n " . ($n === 1 ? 'migration' : 'migrations') . " to be redone:\n", Console::FG_YELLOW);
    foreach ($migrations as $migration) {
        $this->stdout("\t$migration\n");
    }
    $this->stdout("\n");
    if ($this->confirm('Redo the above ' . ($n === 1 ? 'migration' : 'migrations') . '?')) {
        foreach ($migrations as $migration) {
            if (!$this->migrateDown($migration)) {
                $this->stdout("\nMigration failed. The rest of the migrations are canceled.\n", Console::FG_RED);
                return ExitCode::UNSPECIFIED_ERROR;
            }
        }
        foreach (array_reverse($migrations) as $migration) {
            if (!$this->migrateUp($migration)) {
                $this->stdout("\nMigration failed. The rest of the migrations are canceled.\n", Console::FG_RED);
                return ExitCode::UNSPECIFIED_ERROR;
            }
        }
        $this->stdout("\n$n " . ($n === 1 ? 'migration was' : 'migrations were') . " redone.\n", Console::FG_GREEN);
        $this->stdout("\nMigration redone successfully.\n", Console::FG_GREEN);
    }
    return ExitCode::OK;
}

            
actionTo() public メソッド

指定されたバージョンまでアップグレードまたはダウングレードします。

また、UNIXタイムスタンプまたはstrtotime()関数で解析可能な文字列を提供することにより、過去の特定の適用時間までバージョンをダウングレードすることもできます。これは、指定された特定の時間以降に適用されたすべてのバージョンがリバートされることを意味します。

このコマンドは、指定されたマイグレーションを最初にリバートしてから、再度適用します。例えば、

yii migrate/to 101129_185401                          # using timestamp
yii migrate/to m101129_185401_create_user_table       # using full name
yii migrate/to 1392853618                             # using UNIX timestamp
yii migrate/to "2014-02-15 13:00:50"                  # using strtotime() parseable string
yii migrate/to app\migrations\M101129185401CreateUser # using full namespace name
public void actionTo ( $version )
$version string

アプリケーションを移行する必要がある過去のバージョン名または特定の時間値。これは、タイムスタンプ、マイグレーションのフルネーム、UNIXタイムスタンプ、または解析可能な日付時刻文字列のいずれかになります。

throws yii\console\Exception

version引数が無効な場合。

                public function actionTo($version)
{
    if (($namespaceVersion = $this->extractNamespaceMigrationVersion($version)) !== false) {
        return $this->migrateToVersion($namespaceVersion);
    } elseif (($migrationName = $this->extractMigrationVersion($version)) !== false) {
        return $this->migrateToVersion($migrationName);
    } elseif ((string) (int) $version == $version) {
        return $this->migrateToTime($version);
    } elseif (($time = strtotime($version)) !== false) {
        return $this->migrateToTime($time);
    } else {
        throw new Exception("The version argument must be either a timestamp (e.g. 101129_185401),\n the full name of a migration (e.g. m101129_185401_create_user_table),\n the full namespaced name of a migration (e.g. app\\migrations\\M101129185401CreateUserTable),\n a UNIX timestamp (e.g. 1392853000), or a datetime string parseable\nby the strtotime() function (e.g. 2014-02-15 13:00:50).");
    }
}

            
actionUp() public メソッド

新しいマイグレーションを適用することで、アプリケーションをアップグレードします。

例えば、

yii migrate     # apply all new migrations
yii migrate 3   # apply the first 3 new migrations
public integer actionUp ( $limit 0 )
$limit integer

適用する新しいマイグレーションの数。0の場合、利用可能なすべての新しいマイグレーションを適用することを意味します。

return integer

アクション実行のステータス。0は正常、その他の値は異常を意味します。

                public function actionUp($limit = 0)
{
    $migrations = $this->getNewMigrations();
    if (empty($migrations)) {
        $this->stdout("No new migrations found. Your system is up-to-date.\n", Console::FG_GREEN);
        return ExitCode::OK;
    }
    $total = count($migrations);
    $limit = (int) $limit;
    if ($limit > 0) {
        $migrations = array_slice($migrations, 0, $limit);
    }
    $n = count($migrations);
    if ($n === $total) {
        $this->stdout("Total $n new " . ($n === 1 ? 'migration' : 'migrations') . " to be applied:\n", Console::FG_YELLOW);
    } else {
        $this->stdout("Total $n out of $total new " . ($total === 1 ? 'migration' : 'migrations') . " to be applied:\n", Console::FG_YELLOW);
    }
    foreach ($migrations as $migration) {
        $nameLimit = $this->getMigrationNameLimit();
        if ($nameLimit !== null && strlen($migration) > $nameLimit) {
            $this->stdout("\nThe migration name '$migration' is too long. Its not possible to apply this migration.\n", Console::FG_RED);
            return ExitCode::UNSPECIFIED_ERROR;
        }
        $this->stdout("\t$migration\n");
    }
    $this->stdout("\n");
    $applied = 0;
    if ($this->confirm('Apply the above ' . ($n === 1 ? 'migration' : 'migrations') . '?')) {
        foreach ($migrations as $migration) {
            if (!$this->migrateUp($migration)) {
                $this->stdout("\n$applied from $n " . ($applied === 1 ? 'migration was' : 'migrations were') . " applied.\n", Console::FG_RED);
                $this->stdout("\nMigration failed. The rest of the migrations are canceled.\n", Console::FG_RED);
                return ExitCode::UNSPECIFIED_ERROR;
            }
            $applied++;
        }
        $this->stdout("\n$n " . ($n === 1 ? 'migration was' : 'migrations were') . " applied.\n", Console::FG_GREEN);
        $this->stdout("\nMigrated up successfully.\n", Console::FG_GREEN);
    }
    return ExitCode::OK;
}

            
actions() public メソッド

定義元: yii\base\Controller::actions()

コントローラーの外部アクションを宣言します。

このメソッドは、コントローラーの外部アクションを宣言するためにオーバーライドされることを意図しています。アクションIDを配列キーとし、対応するアクションクラス名またはアクション構成配列を配列値とする配列を返す必要があります。例えば、

return [
    'action1' => 'app\components\Action1',
    'action2' => [
        'class' => 'app\components\Action2',
        'property1' => 'value1',
        'property2' => 'value2',
    ],
];

Yii::createObject() は、ここで提供される構成を使用して、リクエストされたアクションを作成するために後で使用されます。

public array actions ( )

                public function actions()
{
    return [];
}

            
addMigrationHistory() protected abstract メソッド

新しいマイグレーションエントリを履歴に追加します。

protected abstract void addMigrationHistory ( $version )
$version string

マイグレーションのバージョン名。

                abstract protected function addMigrationHistory($version);

            
afterAction() public メソッド

定義元: yii\base\Controller::afterAction()

このメソッドは、アクションの実行直後に呼び出されます。

このメソッドは EVENT_AFTER_ACTION イベントをトリガーします。メソッドの戻り値はアクションの戻り値として使用されます。

このメソッドをオーバーライドする場合は、次のコードのようにする必要があります。

public function afterAction($action, $result)
{
    $result = parent::afterAction($action, $result);
    // your custom code here
    return $result;
}
public mixed afterAction ( $action, $result )
$action yii\base\Action

実行されたばかりのアクション。

$result mixed

アクションの戻り結果。

return mixed

処理されたアクション結果。

                public function afterAction($action, $result)
{
    $event = new ActionEvent($action);
    $event->result = $result;
    $this->trigger(self::EVENT_AFTER_ACTION, $event);
    return $event->result;
}

            
ansiFormat() public メソッド

定義元: yii\console\Controller::ansiFormat()

ANSI コードで文字列をフォーマットします。

yii\helpers\Console で定義されている定数を使用して追加のパラメーターを渡すことができます。

echo $this->ansiFormat('This will be red and underlined.', Console::FG_RED, Console::UNDERLINE);
public string ansiFormat ( $string )
$string string

フォーマットする文字列

                public function ansiFormat($string)
{
    if ($this->isColorEnabled()) {
        $args = func_get_args();
        array_shift($args);
        $string = Console::ansiFormat($string, $args);
    }
    return $string;
}

            
attachBehavior() public メソッド

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

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、与えられた構成に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach() メソッドを呼び出すことで、ビヘイビアオブジェクトがこのコンポーネントにアタッチされます。

こちらも参照してください detachBehavior().

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

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの構成。これは、次のいずれかになります。

  • yii\base\Behavior オブジェクト
  • ビヘイビアクラスを指定する文字列
  • Yii::createObject() に渡され、ビヘイビアオブジェクトを作成するオブジェクト構成配列。
return yii\base\Behavior

ビヘイビアオブジェクト

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

            
attachBehaviors() public メソッド

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

コンポーネントにビヘイビアのリストをアタッチします。

各ビヘイビアは、その名前でインデックス付けされ、yii\base\Behavior オブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための構成配列である必要があります。

こちらも参照してください attachBehavior().

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチされるビヘイビアのリスト

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

            
beforeAction() public メソッド

このメソッドは、(可能なすべてのフィルターの後)アクションが実行される直前に呼び出されます。$migrationPath の存在を確認します。

public boolean beforeAction ( $action )
$action yii\base\Action

実行されるアクション。

return boolean

アクションの実行を続行する必要があるかどうか。

throws yii\base\InvalidConfigException

migrationPath で指定されたディレクトリが存在せず、アクションが "create" でない場合。

                public function beforeAction($action)
{
    if (parent::beforeAction($action)) {
        if (empty($this->migrationNamespaces) && empty($this->migrationPath)) {
            throw new InvalidConfigException('At least one of `migrationPath` or `migrationNamespaces` should be specified.');
        }
        $this->migrationNamespaces = (array) $this->migrationNamespaces;
        foreach ($this->migrationNamespaces as $key => $value) {
            $this->migrationNamespaces[$key] = trim($value, '\\');
        }
        if (is_array($this->migrationPath)) {
            foreach ($this->migrationPath as $i => $path) {
                $this->migrationPath[$i] = Yii::getAlias($path);
            }
        } elseif ($this->migrationPath !== null) {
            $path = Yii::getAlias($this->migrationPath);
            if (!is_dir($path)) {
                if ($action->id !== 'create') {
                    throw new InvalidConfigException("Migration failed. Directory specified in migrationPath doesn't exist: {$this->migrationPath}");
                }
                FileHelper::createDirectory($path);
            }
            $this->migrationPath = $path;
        }
        $version = Yii::getVersion();
        $this->stdout("Yii Migration Tool (based on Yii v{$version})\n\n");
        return true;
    }
    return false;
}

            
behaviors() public メソッド

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

このコンポーネントが動作する必要があるビヘイビアのリストを返します。

子クラスは、動作させたいビヘイビアを指定するために、このメソッドをオーバーライドできます。

このメソッドの戻り値は、ビヘイビアオブジェクトまたはビヘイビア名でインデックス付けされた構成の配列である必要があります。ビヘイビア構成は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります。

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

ビヘイビアクラスは yii\base\Behavior を継承する必要があります。ビヘイビアは、名前または匿名で使用してアタッチできます。名前が配列キーとして使用されている場合、この名前を使用して、後で getBehavior() を使用してビヘイビアを取得したり、detachBehavior() を使用してデタッチしたりできます。匿名ビヘイビアは、取得またはデタッチすることはできません。

このメソッドで宣言されたビヘイビアは、自動的に(オンデマンドで)コンポーネントにアタッチされます。

public array behaviors ( )
return array

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

            
bindActionParams() public メソッド

定義元: yii\console\Controller::bindActionParams()

パラメーターをアクションにバインドします。

このメソッドは、yii\base\Action が指定されたパラメーターで実行を開始するときに呼び出されます。このメソッドは、最初にパラメーターをアクションで使用可能な options にバインドします。次に、与えられた引数を検証します。

public array bindActionParams ( $action, $params )
$action yii\base\Action

パラメーターとバインドされるアクション

$params array

アクションにバインドされるパラメーター

return array

アクションが実行できる有効なパラメーター。

throws yii\console\Exception

不明なオプションまたは不足している引数がある場合

                public function bindActionParams($action, $params)
{
    if ($action instanceof InlineAction) {
        $method = new \ReflectionMethod($this, $action->actionMethod);
    } else {
        $method = new \ReflectionMethod($action, 'run');
    }
    $args = [];
    $missing = [];
    $actionParams = [];
    $requestedParams = [];
    foreach ($method->getParameters() as $i => $param) {
        $name = $param->getName();
        $key = null;
        if (array_key_exists($i, $params)) {
            $key = $i;
        } elseif (array_key_exists($name, $params)) {
            $key = $name;
        }
        if ($key !== null) {
            if (PHP_VERSION_ID >= 80000) {
                $isArray = ($type = $param->getType()) instanceof \ReflectionNamedType && $type->getName() === 'array';
            } else {
                $isArray = $param->isArray();
            }
            if ($isArray) {
                $params[$key] = $params[$key] === '' ? [] : preg_split('/\s*,\s*/', $params[$key]);
            }
            $args[] = $actionParams[$key] = $params[$key];
            unset($params[$key]);
        } elseif (
            PHP_VERSION_ID >= 70100
            && ($type = $param->getType()) !== null
            && $type instanceof \ReflectionNamedType
            && !$type->isBuiltin()
        ) {
            try {
                $this->bindInjectedParams($type, $name, $args, $requestedParams);
            } catch (\yii\base\Exception $e) {
                throw new Exception($e->getMessage());
            }
        } elseif ($param->isDefaultValueAvailable()) {
            $args[] = $actionParams[$i] = $param->getDefaultValue();
        } else {
            $missing[] = $name;
        }
    }
    if (!empty($missing)) {
        throw new Exception(Yii::t('yii', 'Missing required arguments: {params}', ['params' => implode(', ', $missing)]));
    }
    // We use a different array here, specifically one that doesn't contain service instances but descriptions instead.
    if (\Yii::$app->requestedParams === null) {
        \Yii::$app->requestedParams = array_merge($actionParams, $requestedParams);
    }
    return array_merge($args, $params);
}

            
bindInjectedParams() protected メソッド (バージョン 2.0.36 から利用可能)

定義元: yii\base\Controller::bindInjectedParams()

アクションメソッドシグネチャの型と名前に基づいてパラメーターを入力します。

protected void bindInjectedParams ( ReflectionType $type, $name, &$args, &$requestedParams )
$type ReflectionType

アクションパラメータのリフレクションされた型。

$name string

パラメータの名前。

$args array

アクションの引数の配列。この関数はアイテムをそれに追加することがあります。

$requestedParams array

リクエストされたパラメータの配列。この関数は特定のキーをそれに書き込むことがあります。

throws yii\base\ErrorException

必要なサービスをロードできない場合。

throws yii\base\InvalidConfigException

DI構成にエラーがある場合にスローされます。

throws yii\di\NotInstantiableException

コンテナ内に適切な定義がない場合、定義を具象クラス(例:インターフェイスの型ヒント)に解決できない場合にスローされます。

                final protected function bindInjectedParams(\ReflectionType $type, $name, &$args, &$requestedParams)
{
    // Since it is not a builtin type it must be DI injection.
    $typeName = $type->getName();
    if (($component = $this->module->get($name, false)) instanceof $typeName) {
        $args[] = $component;
        $requestedParams[$name] = 'Component: ' . get_class($component) . " \$$name";
    } elseif ($this->module->has($typeName) && ($service = $this->module->get($typeName)) instanceof $typeName) {
        $args[] = $service;
        $requestedParams[$name] = 'Module ' . get_class($this->module) . " DI: $typeName \$$name";
    } elseif (\Yii::$container->has($typeName) && ($service = \Yii::$container->get($typeName)) instanceof $typeName) {
        $args[] = $service;
        $requestedParams[$name] = "Container DI: $typeName \$$name";
    } elseif ($type->allowsNull()) {
        $args[] = null;
        $requestedParams[$name] = "Unavailable service: $name";
    } else {
        throw new Exception('Could not load required service: ' . $name);
    }
}

            
canGetProperty() public メソッド

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

プロパティが読み取り可能かどうかを示す値を返します。

プロパティは、以下の場合に読み取ることができます。

  • クラスに指定された名前に関連付けられたゲッターメソッドがある場合(この場合、プロパティ名はケースを区別しません)。
  • クラスに指定された名前のメンバー変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに指定された名前の読み取り可能なプロパティがある場合($checkBehaviors が true の場合)。

参照:canSetProperty()

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

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return 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()

プロパティが設定可能かどうかを示す値を返します。

プロパティは、以下の場合に書き込むことができます。

  • クラスに指定された名前に関連付けられたセッターメソッドがある場合(この場合、プロパティ名はケースを区別しません)。
  • クラスに指定された名前のメンバー変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに指定された名前の書き込み可能なプロパティがある場合($checkBehaviors が true の場合)。

参照:canGetProperty()

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

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return 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 static メソッド
2.0.14 から非推奨。PHP >= 5.5 では、代わりに ::class を使用してください。

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

このクラスの完全修飾名を返します。

public static string className ( )
return string

このクラスの完全修飾名。

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

            
confirm() public メソッド

定義元: yii\console\Controller::confirm()

y または n を入力して確認を求めます。

典型的な使用法は次のようになります。

if ($this->confirm("Are you sure?")) {
    echo "user typed yes\n";
} else {
    echo "user typed no\n";
}
public boolean confirm ( $message, $default false )
$message string

ユーザー入力を待つ前に出力するメッセージ

$default boolean

選択が行われなかった場合に返される値。

return boolean

ユーザーが確認したかどうか。$interactive が false の場合は true を返します。

                public function confirm($message, $default = false)
{
    if ($this->interactive) {
        return Console::confirm($message, $default);
    }
    return true;
}

            
createAction() public メソッド

定義元: yii\base\Controller::createAction()

指定されたアクション ID に基づいてアクションを作成します。

このメソッドは、まずアクション ID が actions() で宣言されているかどうかを確認します。その場合、そこで宣言された構成を使用してアクションオブジェクトを作成します。そうでない場合は、actionXyz の形式の名前を持つコントローラーメソッドを探します。ここで、xyz はアクション ID です。見つかった場合は、そのメソッドを表す yii\base\InlineAction が作成され、返されます。

public yii\base\Action|null createAction ( $id )
$id string

アクションID。

return yii\base\Action|null

新しく作成されたアクションインスタンス。IDがいずれのアクションにも解決されない場合は Null。

                public function createAction($id)
{
    if ($id === '') {
        $id = $this->defaultAction;
    }
    $actionMap = $this->actions();
    if (isset($actionMap[$id])) {
        return Yii::createObject($actionMap[$id], [$id, $this]);
    }
    if (preg_match('/^(?:[a-z0-9_]+-)*[a-z0-9_]+$/', $id)) {
        $methodName = 'action' . str_replace(' ', '', ucwords(str_replace('-', ' ', $id)));
        if (method_exists($this, $methodName)) {
            $method = new \ReflectionMethod($this, $methodName);
            if ($method->isPublic() && $method->getName() === $methodName) {
                return new InlineAction($id, $this, $methodName);
            }
        }
    }
    return null;
}

            
createMigration() protected メソッド

新しいマイグレーションインスタンスを作成します。

protected yii\db\MigrationInterface createMigration ( $class )
$class string

マイグレーションクラス名

return yii\db\MigrationInterface

マイグレーションインスタンス

                protected function createMigration($class)
{
    $this->includeMigrationFile($class);
    /** @var MigrationInterface $migration */
    $migration = Yii::createObject($class);
    if ($migration instanceof BaseObject && $migration->canSetProperty('compact')) {
        $migration->compact = $this->compact;
    }
    return $migration;
}

            
detachBehavior() public メソッド

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

コンポーネントからビヘイビアをデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

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

ビヘイビアの名前。

return yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合は 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);
        }
    }
}

            
findLayoutFile() public メソッド

定義元: yii\base\Controller::findLayoutFile()

適用可能なレイアウトファイルを検索します。

public string|boolean findLayoutFile ( $view )
$view yii\base\View

レイアウトファイルをレンダリングするためのビューオブジェクト。

return string|boolean

レイアウトファイルのパス。または、レイアウトが不要な場合はfalse。このパラメータの指定方法については、render()を参照してください。

throws yii\base\InvalidArgumentException

レイアウトを指定するために無効なパスエイリアスが使用された場合。

                public function findLayoutFile($view)
{
    $module = $this->module;
    $layout = null;
    if (is_string($this->layout)) {
        $layout = $this->layout;
    } elseif ($this->layout === null) {
        while ($module !== null && $module->layout === null) {
            $module = $module->module;
        }
        if ($module !== null && is_string($module->layout)) {
            $layout = $module->layout;
        }
    }
    if ($layout === null) {
        return false;
    }
    if (strncmp($layout, '@', 1) === 0) {
        $file = Yii::getAlias($layout);
    } elseif (strncmp($layout, '/', 1) === 0) {
        $file = Yii::$app->getLayoutPath() . DIRECTORY_SEPARATOR . substr($layout, 1);
    } else {
        $file = $module->getLayoutPath() . DIRECTORY_SEPARATOR . $layout;
    }
    if (pathinfo($file, PATHINFO_EXTENSION) !== '') {
        return $file;
    }
    $path = $file . '.' . $view->defaultExtension;
    if ($view->defaultExtension !== 'php' && !is_file($path)) {
        $path = $file . '.php';
    }
    return $path;
}

            
generateMigrationSourceCode() protected メソッド (バージョン 2.0.8 から利用可能)

新しいマイグレーションソース PHP コードを生成します。

子クラスはこのメソッドをオーバーライドして、追加のロジックやバリエーションをプロセスに追加できます。

protected string generateMigrationSourceCode ( $params )
$params array

生成パラメータ。通常、以下のパラメータが存在します。

  • name: string マイグレーションのベース名
  • className: string マイグレーションクラス名
return string

生成されたPHPコード。

                protected function generateMigrationSourceCode($params)
{
    return $this->renderFile(Yii::getAlias($this->templateFile), $params);
}

            
getActionArgsHelp() public メソッド

定義元: yii\console\Controller::getActionArgsHelp()

アクションの匿名引数に関するヘルプ情報を返します。

返される値は配列である必要があります。キーは引数名であり、値は対応するヘルプ情報です。各値は次の構造の配列である必要があります。

  • required: bool, この引数が必須かどうか
  • type: string|null, この引数のPHP型
  • default: mixed, この引数のデフォルト値
  • comment: string, この引数の説明

デフォルトの実装では、アクションメソッドに対応するパラメータのリフレクションまたはDocBlockから抽出されたヘルプ情報が返されます。

public array getActionArgsHelp ( $action )
$action yii\base\Action

アクションインスタンス

return array

アクション引数のヘルプ情報

                public function getActionArgsHelp($action)
{
    $method = $this->getActionMethodReflection($action);
    $tags = $this->parseDocCommentTags($method);
    $tags['param'] = isset($tags['param']) ? (array) $tags['param'] : [];
    $phpDocParams = [];
    foreach ($tags['param'] as $i => $tag) {
        if (preg_match('/^(?<type>\S+)(\s+\$(?<name>\w+))?(?<comment>.*)/us', $tag, $matches) === 1) {
            $key = empty($matches['name']) ? $i : $matches['name'];
            $phpDocParams[$key] = ['type' => $matches['type'], 'comment' => $matches['comment']];
        }
    }
    unset($tags);
    $args = [];
    /** @var \ReflectionParameter $parameter */
    foreach ($method->getParameters() as $i => $parameter) {
        $type = null;
        $comment = '';
        if (PHP_MAJOR_VERSION > 5 && $parameter->hasType()) {
            $reflectionType = $parameter->getType();
            if (PHP_VERSION_ID >= 70100) {
                $types = method_exists($reflectionType, 'getTypes') ? $reflectionType->getTypes() : [$reflectionType];
                foreach ($types as $key => $reflectionType) {
                    $types[$key] = $reflectionType->getName();
                }
                $type = implode('|', $types);
            } else {
                $type = (string) $reflectionType;
            }
        }
        // find PhpDoc tag by property name or position
        $key = isset($phpDocParams[$parameter->name]) ? $parameter->name : (isset($phpDocParams[$i]) ? $i : null);
        if ($key !== null) {
            $comment = $phpDocParams[$key]['comment'];
            if ($type === null && !empty($phpDocParams[$key]['type'])) {
                $type = $phpDocParams[$key]['type'];
            }
        }
        // if type still not detected, then using type of default value
        if ($type === null && $parameter->isDefaultValueAvailable() && $parameter->getDefaultValue() !== null) {
            $type = gettype($parameter->getDefaultValue());
        }
        $args[$parameter->name] = [
            'required' => !$parameter->isOptional(),
            'type' => $type,
            'default' => $parameter->isDefaultValueAvailable() ? $parameter->getDefaultValue() : null,
            'comment' => $comment,
        ];
    }
    return $args;
}

            
getActionHelp() public メソッド

定義元: yii\console\Controller::getActionHelp()

指定されたアクションの詳細なヘルプ情報を返します。

public string getActionHelp ( $action )
$action yii\base\Action

ヘルプを取得するアクション

return string

指定されたアクションの詳細なヘルプ情報。

                public function getActionHelp($action)
{
    return $this->parseDocCommentDetail($this->getActionMethodReflection($action));
}

            
getActionHelpSummary() public メソッド

定義元: yii\console\Controller::getActionHelpSummary()

指定されたアクションを説明する1行の短い要約を返します。

public string getActionHelpSummary ( $action )
$action yii\base\Action

サマリーを取得するアクション

return string

指定されたアクションを説明する一行の短いサマリー。

                public function getActionHelpSummary($action)
{
    if ($action === null) {
        return $this->ansiFormat(Yii::t('yii', 'Action not found.'), Console::FG_RED);
    }
    return $this->parseDocCommentSummary($this->getActionMethodReflection($action));
}

            
getActionMethodReflection() protected メソッド
protected ReflectionFunctionAbstract getActionMethodReflection ( $action )
$action yii\base\Action

                protected function getActionMethodReflection($action)
{
    if (!isset($this->_reflections[$action->id])) {
        if ($action instanceof InlineAction) {
            $this->_reflections[$action->id] = new \ReflectionMethod($this, $action->actionMethod);
        } else {
            $this->_reflections[$action->id] = new \ReflectionMethod($action, 'run');
        }
    }
    return $this->_reflections[$action->id];
}

            
getActionOptionsHelp() public メソッド

定義元: yii\console\Controller::getActionOptionsHelp()

アクションのオプションに関するヘルプ情報を返します。

返される値は配列である必要があります。キーはオプション名であり、値は対応するヘルプ情報です。各値は次の構造の配列である必要があります。

  • type: string, この引数のPHP型。
  • default: string, この引数のデフォルト値
  • comment: string, この引数のコメント

デフォルトの実装では、アクションオプションに対応するプロパティのdocコメントから抽出されたヘルプ情報が返されます。

public array getActionOptionsHelp ( $action )
$action yii\base\Action
return array

アクションオプションのヘルプ情報

                public function getActionOptionsHelp($action)
{
    $optionNames = $this->options($action->id);
    if (empty($optionNames)) {
        return [];
    }
    $class = new \ReflectionClass($this);
    $options = [];
    foreach ($class->getProperties() as $property) {
        $name = $property->getName();
        if (!in_array($name, $optionNames, true)) {
            continue;
        }
        $defaultValue = $property->getValue($this);
        $tags = $this->parseDocCommentTags($property);
        // Display camelCase options in kebab-case
        $name = Inflector::camel2id($name, '-', true);
        if (isset($tags['var']) || isset($tags['property'])) {
            $doc = isset($tags['var']) ? $tags['var'] : $tags['property'];
            if (is_array($doc)) {
                $doc = reset($doc);
            }
            if (preg_match('/^(\S+)(.*)/s', $doc, $matches)) {
                $type = $matches[1];
                $comment = $matches[2];
            } else {
                $type = null;
                $comment = $doc;
            }
            $options[$name] = [
                'type' => $type,
                'default' => $defaultValue,
                'comment' => $comment,
            ];
        } else {
            $options[$name] = [
                'type' => null,
                'default' => $defaultValue,
                'comment' => '',
            ];
        }
    }
    return $options;
}

            
getBehavior() public メソッド

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

名前付きビヘイビアオブジェクトを返します。

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

ビヘイビア名

return yii\base\Behavior|null

ビヘイビアオブジェクト。または、ビヘイビアが存在しない場合は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 ( )
return yii\base\Behavior[]

このコンポーネントにアタッチされたビヘイビアのリスト

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

            
getHelp() public メソッド

定義元: yii\console\Controller::getHelp()

このコントローラーのヘルプ情報を返します。

カスタマイズされたヘルプを返すために、このメソッドをオーバーライドできます。デフォルトの実装では、PHPDocコメントから取得したヘルプ情報が返されます。

public string getHelp ( )

                public function getHelp()
{
    return $this->parseDocCommentDetail(new \ReflectionClass($this));
}

            
getHelpSummary() public メソッド

定義箇所: yii\console\Controller::getHelpSummary()

このコントローラーを説明する1行の短い要約を返します。

このメソッドをオーバーライドして、カスタマイズされた概要を返すことができます。デフォルトの実装では、PHPDocコメントの最初の行を返します。

public string getHelpSummary ( )

                public function getHelpSummary()
{
    return $this->parseDocCommentSummary(new \ReflectionClass($this));
}

            
getMigrationHistory() protected abstract メソッド

マイグレーション履歴を返します。

protected abstract array getMigrationHistory ( $limit )
$limit integer|null

返される履歴の最大レコード数。"制限なし"の場合はnull

return array

マイグレーション履歴

                abstract protected function getMigrationHistory($limit);

            
getMigrationNameLimit() protected メソッド (バージョン 2.0.13 から利用可能)

マイグレーションの最大名前長を返します。

サブクラスはこのメソッドをオーバーライドして制限を定義できます。

protected integer|null getMigrationNameLimit ( )
return integer|null

マイグレーション名の最大長。制限がない場合はnull

                protected function getMigrationNameLimit()
{
    return null;
}

            
getModules() public メソッド

定義箇所: yii\base\Controller::getModules()

このコントローラーのすべての祖先モジュールを返します。

配列の最初のモジュールは最も外側のモジュール(つまり、アプリケーションインスタンス)であり、最後が最も内側のモジュールです。

public yii\base\Module[] getModules ( )
return yii\base\Module[]

このコントローラーが配置されているすべての祖先モジュール。

                public function getModules()
{
    $modules = [$this->module];
    $module = $this->module;
    while ($module->module !== null) {
        array_unshift($modules, $module->module);
        $module = $module->module;
    }
    return $modules;
}

            
getNewMigrations() protected メソッド

適用されていないマイグレーションを返します。

protected array getNewMigrations ( )
return array

新しいマイグレーションのリスト

                protected function getNewMigrations()
{
    $applied = [];
    foreach ($this->getMigrationHistory(null) as $class => $time) {
        $applied[trim($class, '\\')] = true;
    }
    $migrationPaths = [];
    if (is_array($this->migrationPath)) {
        foreach ($this->migrationPath as $path) {
            $migrationPaths[] = [$path, ''];
        }
    } elseif (!empty($this->migrationPath)) {
        $migrationPaths[] = [$this->migrationPath, ''];
    }
    foreach ($this->migrationNamespaces as $namespace) {
        $migrationPaths[] = [$this->getNamespacePath($namespace), $namespace];
    }
    $migrations = [];
    foreach ($migrationPaths as $item) {
        list($migrationPath, $namespace) = $item;
        if (!file_exists($migrationPath)) {
            continue;
        }
        $handle = opendir($migrationPath);
        while (($file = readdir($handle)) !== false) {
            if ($file === '.' || $file === '..') {
                continue;
            }
            $path = $migrationPath . DIRECTORY_SEPARATOR . $file;
            if (preg_match('/^(m(\d{6}_?\d{6})\D.*?)\.php$/is', $file, $matches) && is_file($path)) {
                $class = $matches[1];
                if (!empty($namespace)) {
                    $class = $namespace . '\\' . $class;
                }
                $time = str_replace('_', '', $matches[2]);
                if (!isset($applied[$class])) {
                    $migrations[$time . '\\' . $class] = $class;
                }
            }
        }
        closedir($handle);
    }
    ksort($migrations);
    return array_values($migrations);
}

            
getOptionValues() public メソッド

定義箇所: yii\console\Controller::getOptionValues()

アクション ID のオプションに対応するプロパティを返します。子クラスは、可能なプロパティを指定するためにこのメソッドをオーバーライドできます。

public array getOptionValues ( $actionID )
$actionID string

現在のリクエストのアクション ID

return array

アクションのオプションに対応するプロパティ

                public function getOptionValues($actionID)
{
    // $actionId might be used in subclasses to provide properties specific to action id
    $properties = [];
    foreach ($this->options($this->action->id) as $property) {
        $properties[$property] = $this->$property;
    }
    return $properties;
}

            
getPassedOptionValues() public メソッド

定義箇所: yii\console\Controller::getPassedOptionValues()

渡されたオプションに対応するプロパティを返します。

public array getPassedOptionValues ( )
return array

渡されたオプションに対応するプロパティ

                public function getPassedOptionValues()
{
    $properties = [];
    foreach ($this->_passedOptions as $property) {
        $properties[$property] = $this->$property;
    }
    return $properties;
}

            
getPassedOptions() public メソッド

定義箇所: yii\console\Controller::getPassedOptions()

実行中に渡された有効なオプションの名前を返します。

public array getPassedOptions ( )
return array

実行中に渡されたオプションの名前

                public function getPassedOptions()
{
    return $this->_passedOptions;
}

            
getRoute() public メソッド

定義箇所: yii\base\Controller::getRoute()

現在のリクエストのルートを返します。

public string getRoute ( )
return string

現在のリクエストのルート(モジュールID、コントローラーID、アクションID)。

                public function getRoute()
{
    return $this->action !== null ? $this->action->getUniqueId() : $this->getUniqueId();
}

            
getUniqueId() public メソッド

定義箇所: yii\base\Controller::getUniqueId()

コントローラーの一意の ID を返します。

public string getUniqueId ( )
return string

モジュールID(存在する場合)がプレフィックスされたコントローラーID。

                public function getUniqueId()
{
    return $this->module instanceof Application ? $this->id : $this->module->getUniqueId() . '/' . $this->id;
}

            
getView() public メソッド

定義箇所: yii\base\Controller::getView()

ビューまたはビューファイルのレンダリングに使用できるビューオブジェクトを返します。

render(), renderPartial(), renderFile() メソッドは、実際のビューのレンダリングを実装するためにこのビューオブジェクトを使用します。設定されていない場合、デフォルトで "view" アプリケーションコンポーネントになります。

public yii\base\View|yii\web\View getView ( )
return yii\base\View|yii\web\View

ビューまたはビューファイルをレンダリングするために使用できるビューオブジェクト。

                public function getView()
{
    if ($this->_view === null) {
        $this->_view = Yii::$app->getView();
    }
    return $this->_view;
}

            
getViewPath() public メソッド

定義箇所: yii\base\Controller::getViewPath()

このコントローラーのビューファイルを含むディレクトリを返します。

デフォルトの実装では、$module$viewPath ディレクトリの下のコントローラ $id として名前が付けられたディレクトリを返します。

public string getViewPath ( )
return string

このコントローラーのビューファイルを含むディレクトリ。

                public function getViewPath()
{
    if ($this->_viewPath === null) {
        $this->_viewPath = $this->module->getViewPath() . DIRECTORY_SEPARATOR . $this->id;
    }
    return $this->_viewPath;
}

            
hasEventHandlers() public メソッド

定義箇所: yii\base\Component::hasEventHandlers()

指定された名前のイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

return 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()

メソッドが定義されているかどうかを示す値を返します。

メソッドが定義されるのは、

  • クラスが指定された名前のメソッドを持っている場合
  • アタッチされたビヘイビアが指定された名前のメソッドを持っている場合($checkBehaviors が true の場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

return 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()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティが定義されているのは、以下のいずれかの場合です。

  • クラスが、指定された名前に関連付けられたゲッターまたはセッターメソッドを持っている場合(この場合、プロパティ名は大小文字を区別しません)。
  • クラスに指定された名前のメンバー変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアが、指定された名前のプロパティを持っている場合 ($checkBehaviors が true の場合)。

参考資料

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

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが定義されているかどうか

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

            
includeMigrationFile() protected メソッド (バージョン 2.0.12 以降)

指定されたマイグレーションクラス名のマイグレーションファイルを含めます。

この関数は、自動ローディングによってロードされる名前空間付きのマイグレーションでは何も行いません。名前空間のないクラスのために、$migrationPath を検索してマイグレーションファイルを含めます。

protected void includeMigrationFile ( $class )
$class string

マイグレーションクラス名。

                protected function includeMigrationFile($class)
{
    $class = trim($class, '\\');
    if (strpos($class, '\\') === false) {
        if (is_array($this->migrationPath)) {
            foreach ($this->migrationPath as $path) {
                $file = $path . DIRECTORY_SEPARATOR . $class . '.php';
                if (is_file($file)) {
                    require_once $file;
                    break;
                }
            }
        } else {
            $file = $this->migrationPath . DIRECTORY_SEPARATOR . $class . '.php';
            require_once $file;
        }
    }
}

            
init() public メソッド (バージョン 2.0.36 以降)

定義元: yii\base\Controller::init()

オブジェクトを初期化します。

このメソッドは、オブジェクトが指定された構成で初期化された後、コンストラクタの最後に呼び出されます。

public void init ( )

                public function init()
{
    parent::init();
    $this->request = Instance::ensure($this->request, Request::className());
    $this->response = Instance::ensure($this->response, Response::className());
}

            
isColorEnabled() public メソッド

定義元: yii\console\Controller::isColorEnabled()

ANSI カラーが有効かどうかを示す値を返します。

ANSIカラーが有効になるのは、$color が true に設定されているか、設定されておらず、ターミナルがANSIカラーをサポートしている場合のみです。

public boolean isColorEnabled ( $stream = \STDOUT )
$stream リソース

チェックするストリーム。

return boolean

出力でANSIスタイルを有効にするかどうか。

                public function isColorEnabled($stream = \STDOUT)
{
    return $this->color === null ? Console::streamSupportsAnsiColors($stream) : $this->color;
}

            
migrateDown() protected メソッド

指定されたマイグレーションクラスでダウングレードします。

protected boolean migrateDown ( $class )
$class string

マイグレーションクラス名

return boolean

マイグレーションが成功したかどうか

                protected function migrateDown($class)
{
    if ($class === self::BASE_MIGRATION) {
        return true;
    }
    $this->stdout("*** reverting $class\n", Console::FG_YELLOW);
    $start = microtime(true);
    $migration = $this->createMigration($class);
    if ($migration->down() !== false) {
        $this->removeMigrationHistory($class);
        $time = microtime(true) - $start;
        $this->stdout("*** reverted $class (time: " . sprintf('%.3f', $time) . "s)\n\n", Console::FG_GREEN);
        return true;
    }
    $time = microtime(true) - $start;
    $this->stdout("*** failed to revert $class (time: " . sprintf('%.3f', $time) . "s)\n\n", Console::FG_RED);
    return false;
}

            
migrateToTime() protected メソッド

過去の指定された適用時間にマイグレートします。

protected void migrateToTime ( $time )
$time integer

UNIXタイムスタンプ値。

                protected function migrateToTime($time)
{
    $count = 0;
    $migrations = array_values($this->getMigrationHistory(null));
    while ($count < count($migrations) && $migrations[$count] > $time) {
        ++$count;
    }
    if ($count === 0) {
        $this->stdout("Nothing needs to be done.\n", Console::FG_GREEN);
    } else {
        return $this->actionDown($count);
    }
    return ExitCode::OK;
}

            
migrateToVersion() protected メソッド

特定のバージョンにマイグレートします。

protected integer migrateToVersion ( $version )
$version string

フルフォーマットの名前。

return integer

CLI終了コード

throws yii\console\Exception

指定されたバージョンが見つからない場合。

                protected function migrateToVersion($version)
{
    $originalVersion = $version;
    // try migrate up
    $migrations = $this->getNewMigrations();
    foreach ($migrations as $i => $migration) {
        if (strpos($migration, $version) === 0) {
            return $this->actionUp($i + 1);
        }
    }
    // try migrate down
    $migrations = array_keys($this->getMigrationHistory(null));
    foreach ($migrations as $i => $migration) {
        if (strpos($migration, $version) === 0) {
            if ($i === 0) {
                $this->stdout("Already at '$originalVersion'. Nothing needs to be done.\n", Console::FG_YELLOW);
            } else {
                return $this->actionDown($i);
            }
            return ExitCode::OK;
        }
    }
    throw new Exception("Unable to find the version '$originalVersion'.");
}

            
migrateUp() protected メソッド

指定されたマイグレーションクラスでアップグレードします。

protected boolean migrateUp ( $class )
$class string

マイグレーションクラス名

return boolean

マイグレーションが成功したかどうか

                protected function migrateUp($class)
{
    if ($class === self::BASE_MIGRATION) {
        return true;
    }
    $this->stdout("*** applying $class\n", Console::FG_YELLOW);
    $start = microtime(true);
    $migration = $this->createMigration($class);
    if ($migration->up() !== false) {
        $this->addMigrationHistory($class);
        $time = microtime(true) - $start;
        $this->stdout("*** applied $class (time: " . sprintf('%.3f', $time) . "s)\n\n", Console::FG_GREEN);
        return true;
    }
    $time = microtime(true) - $start;
    $this->stdout("*** failed to apply $class (time: " . sprintf('%.3f', $time) . "s)\n\n", Console::FG_RED);
    return false;
}

            
off() public メソッド

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

このコンポーネントから既存のイベントハンドラーをデタッチします。

このメソッドは、on() の反対です。

注: イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラのみが削除され、このワイルドカードに一致するプレーン名で登録されたハンドラは残ります。

参考資料 on()

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

イベント名

$handler callable|null

削除するイベントハンドラ。nullの場合、名前付きイベントにアタッチされたすべてのハンドラが削除されます。

return 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 メソッド

定義元: 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 callable

イベントハンドラ

$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]);
    }
}

            
optionAliases() public メソッド (バージョン 2.0.8 以降)

定義元: yii\console\Controller::optionAliases()

オプションのエイリアス名を返します。

子クラスは、このメソッドをオーバーライドして、エイリアスオプションを指定できます。

参考資料 options()

public array optionAliases ( )
return array

オプションのエイリアス名。アクションに対して有効で、キーはオプションのエイリアス名、値はオプション名です。

                public function optionAliases()
{
    return [
        'h' => 'help',
    ];
}

            
options() public メソッド

アクション(id)の有効なオプションの名前を返します。オプションには、名前がオプション名であるパブリックメンバー変数が存在する必要があります。

子クラスは、このメソッドをオーバーライドして、指定可能なオプションを指定できます。

オプションを介して設定された値は、beforeAction() が呼び出されるまで利用できないことに注意してください。

public string[] options ( $actionID )
$actionID string

現在のリクエストのアクション ID

return string[]

アクションに対して有効なオプションの名前

                public function options($actionID)
{
    return array_merge(
        parent::options($actionID),
        ['migrationPath', 'migrationNamespaces', 'compact'], // global for all actions
        $actionID === 'create' ? ['templateFile'] : [] // action create
    );
}

            
parseDocCommentDetail() protected メソッド

定義元: yii\console\Controller::parseDocCommentDetail()

docblock から詳細な説明を返します。

protected string parseDocCommentDetail ( $reflection )
$reflection ReflectionClass|ReflectionProperty|ReflectionFunctionAbstract

                protected function parseDocCommentDetail($reflection)
{
    $comment = strtr(trim(preg_replace('/^\s*\**([ \t])?/m', '', trim($reflection->getDocComment(), '/'))), "\r", '');
    if (preg_match('/^\s*@\w+/m', $comment, $matches, PREG_OFFSET_CAPTURE)) {
        $comment = trim(substr($comment, 0, $matches[0][1]));
    }
    if ($comment !== '') {
        return rtrim(Console::renderColoredString(Console::markdownToAnsi($comment)));
    }
    return '';
}

            
parseDocCommentSummary() protected メソッド

定義元: yii\console\Controller::parseDocCommentSummary()

docblock の最初の行を返します。

protected string parseDocCommentSummary ( $reflection )
$reflection ReflectionClass|ReflectionProperty|ReflectionFunctionAbstract

                protected function parseDocCommentSummary($reflection)
{
    $docLines = preg_split('~\R~u', $reflection->getDocComment());
    if (isset($docLines[1])) {
        return trim($docLines[1], "\t *");
    }
    return '';
}

            
parseDocCommentTags() protected メソッド

定義元: yii\console\Controller::parseDocCommentTags()

コメントブロックをタグに解析します。

protected array parseDocCommentTags ( $reflection )
$reflection ReflectionClass|ReflectionProperty|ReflectionFunctionAbstract

コメントブロック

return array

解析されたタグ

                protected function parseDocCommentTags($reflection)
{
    $comment = $reflection->getDocComment();
    $comment = "@description \n" . strtr(trim(preg_replace('/^\s*\**([ \t])?/m', '', trim($comment, '/'))), "\r", '');
    $parts = preg_split('/^\s*@/m', $comment, -1, PREG_SPLIT_NO_EMPTY);
    $tags = [];
    foreach ($parts as $part) {
        if (preg_match('/^(\w+)(.*)/ms', trim($part), $matches)) {
            $name = $matches[1];
            if (!isset($tags[$name])) {
                $tags[$name] = trim($matches[2]);
            } elseif (is_array($tags[$name])) {
                $tags[$name][] = trim($matches[2]);
            } else {
                $tags[$name] = [$tags[$name], trim($matches[2])];
            }
        }
    }
    return $tags;
}

            
prompt() public メソッド

定義元: yii\console\Controller::prompt()

ユーザーに入力を促し、それを検証します。

public string prompt ( $text, $options = [] )
$text string

プロンプト文字列

$options array

入力を検証するためのオプション

  • required: 必須かどうか
  • default: ユーザーが何も入力しなかった場合のデフォルト値
  • pattern: ユーザー入力を検証するための正規表現パターン
  • validator: 入力を検証するための呼び出し可能な関数。関数は2つのパラメーターを受け入れる必要があります。
    • $input: 検証するユーザー入力
    • $error: 検証に失敗した場合に参照渡しされるエラー値。

validator関数を使用したプロンプトメソッドの使用方法の例。

$code = $this->prompt('Enter 4-Chars-Pin', ['required' => true, 'validator' => function($input, &$error) {
    if (strlen($input) !== 4) {
        $error = 'The Pin must be exactly 4 chars!';
        return false;
    }
    return true;
}]);
return string

ユーザー入力

                public function prompt($text, $options = [])
{
    if ($this->interactive) {
        return Console::prompt($text, $options);
    }
    return isset($options['default']) ? $options['default'] : '';
}

            
removeMigrationHistory() protected abstract メソッド

既存のマイグレーションを履歴から削除します。

protected abstract void removeMigrationHistory ( $version )
$version string

マイグレーションのバージョン名。

                abstract protected function removeMigrationHistory($version);

            
render() public メソッド

定義元: yii\base\Controller::render()

ビューをレンダリングし、利用可能な場合はレイアウトを適用します。

レンダリングされるビューは、次のいずれかの形式で指定できます。

  • パスエイリアス (例: "@app/views/site/index")
  • アプリケーション内の絶対パス (例: "//site/index"): ビュー名はダブルスラッシュで始まります。実際のビューファイルは、アプリケーションのビューパスの下で検索されます。
  • モジュール内の絶対パス (例: "/site/index"): ビュー名は単一のスラッシュで始まります。実際のビューファイルは、$moduleビューパスの下で検索されます。
  • 相対パス (例: "index"): 実際のビューファイルは、$viewPathの下で検索されます。

適用するレイアウトを決定するために、次の2つの手順が実行されます。

  1. 最初のステップでは、レイアウト名とコンテキストモジュールを決定します。
  • $layoutが文字列として指定されている場合は、それをレイアウト名として使用し、$moduleをコンテキストモジュールとして使用します。
  • $layoutがnullの場合、このコントローラーのすべての祖先モジュールを検索し、layoutがnullではない最初のモジュールを見つけます。レイアウトと対応するモジュールは、それぞれレイアウト名とコンテキストモジュールとして使用されます。そのようなモジュールが見つからない場合、または対応するレイアウトが文字列ではない場合は、適用可能なレイアウトがないことを意味するfalseを返します。
  1. 2番目のステップでは、以前に見つかったレイアウト名とコンテキストモジュールに従って、実際のレイアウトファイルを決定します。レイアウト名は次のいずれかになります。
  • パスエイリアス (例: "@app/views/layouts/main")
  • 絶対パス (例: "/main"): レイアウト名はスラッシュで始まります。実際のレイアウトファイルは、アプリケーションのレイアウトパスの下で検索されます。
  • 相対パス (例: "main"): 実際のレイアウトファイルは、コンテキストモジュールのレイアウトパスの下で検索されます。

レイアウト名にファイル拡張子が含まれていない場合は、デフォルトの.phpが使用されます。

public string render ( $view, $params = [] )
$view string

ビュー名。

$params array

ビューで使用可能にする必要があるパラメーター (名前と値のペア)。これらのパラメーターはレイアウトでは使用できません。

return string

レンダリング結果。

throws yii\base\InvalidArgumentException

ビューファイルまたはレイアウトファイルが存在しない場合。

                public function render($view, $params = [])
{
    $content = $this->getView()->render($view, $params, $this);
    return $this->renderContent($content);
}

            
renderContent() public メソッド (バージョン 2.0.1 以降で使用可能)

定義元: yii\base\Controller::renderContent()

レイアウトを適用して静的文字列をレンダリングします。

public string renderContent ( $content )
$content string

レンダリングされる静的な文字列

return string

指定された静的文字列を$content変数として使用したレイアウトのレンダリング結果。レイアウトが無効になっている場合は、文字列がそのまま返されます。

                public function renderContent($content)
{
    $layoutFile = $this->findLayoutFile($this->getView());
    if ($layoutFile !== false) {
        return $this->getView()->renderFile($layoutFile, ['content' => $content], $this);
    }
    return $content;
}

            
renderFile() public メソッド

定義元: yii\base\Controller::renderFile()

ビューファイルをレンダリングします。

public string renderFile ( $file, $params = [] )
$file string

レンダリングするビューファイル。これは、ファイルパスまたはパスエイリアスのいずれかになります。

$params array

ビューで使用可能にする必要があるパラメーター (名前と値のペア)。

return string

レンダリング結果。

throws yii\base\InvalidArgumentException

ビューファイルが存在しない場合。

                public function renderFile($file, $params = [])
{
    return $this->getView()->renderFile($file, $params, $this);
}

            
renderPartial() public メソッド

定義元: yii\base\Controller::renderPartial()

レイアウトを適用せずにビューをレンダリングします。

このメソッドは render() と異なり、レイアウトを適用しません。

public string renderPartial ( $view, $params = [] )
$view string

ビュー名。ビュー名の指定方法については render() を参照してください。

$params array

ビューで使用可能にする必要があるパラメーター (名前と値のペア)。

return string

レンダリング結果。

throws yii\base\InvalidArgumentException

ビューファイルが存在しない場合。

                public function renderPartial($view, $params = [])
{
    return $this->getView()->render($view, $params, $this);
}

            
run() public メソッド

定義元: yii\base\Controller::run()

ルートで指定されたリクエストを実行します。

ルートは、このコントローラ内のアクションのID、またはモジュールID、コントローラID、アクションIDで構成される完全なルートのいずれかです。ルートがスラッシュ '/' で始まる場合、ルートの解析はアプリケーションから開始されます。そうでない場合は、このコントローラの親モジュールから開始されます。

runAction() も参照してください。

public mixed run ( $route, $params = [] )
$route string

処理されるルート。例: 'view', 'comment/view', '/admin/comment/view'。

$params array

アクションに渡されるパラメータ。

return mixed

アクションの結果。

                public function run($route, $params = [])
{
    $pos = strpos($route, '/');
    if ($pos === false) {
        return $this->runAction($route, $params);
    } elseif ($pos > 0) {
        return $this->module->runAction($route, $params);
    }
    return Yii::$app->runAction(ltrim($route, '/'), $params);
}

            
runAction() public メソッド

定義元: yii\console\Controller::runAction()

指定されたアクション ID とパラメーターを使用してアクションを実行します。

アクションIDが空の場合、このメソッドは $defaultAction を使用します。

createAction() も参照してください。

public integer runAction ( $id, $params = [] )
$id string

実行されるアクションのID。

$params array

アクションに渡されるパラメータ (名前と値のペア)。

return integer

アクション実行のステータス。0は正常、その他の値は異常を意味します。

throws yii\base\InvalidRouteException

要求されたアクションIDが正常にアクションに解決できない場合。

throws yii\console\Exception

不明なオプションまたは不足している引数がある場合

                public function runAction($id, $params = [])
{
    if (!empty($params)) {
        // populate options here so that they are available in beforeAction().
        $options = $this->options($id === '' ? $this->defaultAction : $id);
        if (isset($params['_aliases'])) {
            $optionAliases = $this->optionAliases();
            foreach ($params['_aliases'] as $name => $value) {
                if (array_key_exists($name, $optionAliases)) {
                    $params[$optionAliases[$name]] = $value;
                } else {
                    $message = Yii::t('yii', 'Unknown alias: -{name}', ['name' => $name]);
                    if (!empty($optionAliases)) {
                        $aliasesAvailable = [];
                        foreach ($optionAliases as $alias => $option) {
                            $aliasesAvailable[] = '-' . $alias . ' (--' . $option . ')';
                        }
                        $message .= '. ' . Yii::t('yii', 'Aliases available: {aliases}', [
                            'aliases' => implode(', ', $aliasesAvailable)
                        ]);
                    }
                    throw new Exception($message);
                }
            }
            unset($params['_aliases']);
        }
        foreach ($params as $name => $value) {
            // Allow camelCase options to be entered in kebab-case
            if (!in_array($name, $options, true) && strpos($name, '-') !== false) {
                $kebabName = $name;
                $altName = lcfirst(Inflector::id2camel($kebabName));
                if (in_array($altName, $options, true)) {
                    $name = $altName;
                }
            }
            if (in_array($name, $options, true)) {
                $default = $this->$name;
                if (is_array($default) && is_string($value)) {
                    $this->$name = preg_split('/\s*,\s*(?![^()]*\))/', $value);
                } elseif ($default !== null) {
                    settype($value, gettype($default));
                    $this->$name = $value;
                } else {
                    $this->$name = $value;
                }
                $this->_passedOptions[] = $name;
                unset($params[$name]);
                if (isset($kebabName)) {
                    unset($params[$kebabName]);
                }
            } elseif (!is_int($name)) {
                $message = Yii::t('yii', 'Unknown option: --{name}', ['name' => $name]);
                if (!empty($options)) {
                    $message .= '. ' . Yii::t('yii', 'Options available: {options}', ['options' => '--' . implode(', --', $options)]);
                }
                throw new Exception($message);
            }
        }
    }
    if ($this->help) {
        $route = $this->getUniqueId() . '/' . $id;
        return Yii::$app->runAction('help', [$route]);
    }
    return parent::runAction($id, $params);
}

            
select() public メソッド

定義元: yii\console\Controller::select()

ユーザーに選択肢を与えます。入力として '?' を与えると、選択肢とその説明のリストが表示されます。

public string select ( $prompt, $options = [], $default null )
$prompt string

プロンプトメッセージ

$options array

選択肢となるキーと値の配列

$default string|null

ユーザーがオプションを指定しない場合に使用する値。デフォルトが null の場合、ユーザーはオプションを選択する必要があります。

return string

ユーザーが選択したオプション文字

バージョン 説明
2.0.49 $default 引数を追加

                public function select($prompt, $options = [], $default = null)
{
    if ($this->interactive) {
        return Console::select($prompt, $options, $default);
    }
    return $default;
}

            
setView() public メソッド

定義元: yii\base\Controller::setView()

このコントローラーで使用するビューオブジェクトを設定します。

public void setView ( $view )
$view yii\base\View|yii\web\View

ビューまたはビューファイルをレンダリングするために使用できるビューオブジェクト。

                public function setView($view)
{
    $this->_view = $view;
}

            
setViewPath() public メソッド (バージョン 2.0.7 以降利用可能)

定義元: yii\base\Controller::setViewPath()

ビューファイルを含むディレクトリを設定します。

public void setViewPath ( $path )
$path string

ビューファイルのルートディレクトリ。

throws yii\base\InvalidArgumentException

ディレクトリが無効な場合

                public function setViewPath($path)
{
    $this->_viewPath = Yii::getAlias($path);
}

            
stderr() public メソッド

定義元: yii\console\Controller::stderr()

文字列を STDERR に出力します。

yii\helpers\Console で定義されている定数を使用して追加のパラメータを渡すことで、ANSIコードで文字列を任意にフォーマットできます。

$this->stderr('This will be red and underlined.', Console::FG_RED, Console::UNDERLINE);
public integer|boolean stderr ( $string )
$string string

印刷する文字列

return integer|boolean

印刷されたバイト数、またはエラーの場合は false

                public function stderr($string)
{
    if ($this->isColorEnabled(\STDERR)) {
        $args = func_get_args();
        array_shift($args);
        $string = Console::ansiFormat($string, $args);
    }
    return fwrite(\STDERR, $string);
}

            
stdout() public メソッド

定義元: yii\console\Controller::stdout()

文字列を STDOUT に出力します。

yii\helpers\Console で定義されている定数を使用して追加のパラメータを渡すことで、ANSIコードで文字列を任意にフォーマットできます。

$this->stdout('This will be red and underlined.', Console::FG_RED, Console::UNDERLINE);
public integer|boolean stdout ( $string )
$string string

印刷する文字列

return integer|boolean

印刷されたバイト数、またはエラーの場合は false

                public function stdout($string)
{
    if ($this->isColorEnabled()) {
        $args = func_get_args();
        array_shift($args);
        $string = Console::ansiFormat($string, $args);
    }
    return Console::stdout($string);
}

            
trigger() public メソッド

定義元: 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);
}

            
truncateDatabase() protected メソッド (バージョン 2.0.13 から利用可能)

データベースを切り捨てます。

このメソッドは、データベースをクリアするタスクを実装するために、サブクラスでオーバーライドされるべきです。

protected void truncateDatabase ( )
throws yii\base\NotSupportedException

オーバーライドされていない場合

                protected function truncateDatabase()
{
    throw new NotSupportedException('This command is not implemented in ' . get_class($this));
}