0 フォロワー

クラス yii\web\GroupUrlRule

継承yii\web\GroupUrlRule » yii\web\CompositeUrlRule » yii\base\BaseObject
実装yii\base\Configurable, yii\web\UrlRuleInterface
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/web/GroupUrlRule.php

GroupUrlRule は、パターンとルートで同じプレフィックスを共有する URL ルールのコレクションを表します。

GroupUrlRule は、モジュール ID を URL ルールのプレフィックスとして頻繁に使用するモジュールで最適に使用されます。たとえば、次のコードは admin モジュールのルールを作成します。

new GroupUrlRule([
    'prefix' => 'admin',
    'rules' => [
        'login' => 'user/login',
        'logout' => 'user/logout',
        'dashboard' => 'default/dashboard',
    ],
]);

// the above rule is equivalent to the following three rules:

[
    'admin/login' => 'admin/user/login',
    'admin/logout' => 'admin/user/logout',
    'admin/dashboard' => 'admin/default/dashboard',
]

上記の例では、パターンとルートのプレフィックスが同じであると想定しています。これらは、$prefix$routePrefix を個別に構成することで、異なるものにすることができます。

GroupUrlRule を使用すると、含まれている個々のルールを直接宣言するよりも効率的です。これは、GroupUrlRule がプレフィックスが一致するかどうかを確認するだけで、URL 解析または作成のリクエストを処理する必要があるかどうかを迅速に判断できるためです。

公開プロパティ

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

プロパティ 説明 定義元
$createStatus integer|null 最後の createUrl() 呼び出し後の URL 作成のステータス。 yii\web\CompositeUrlRule
$createUrlStatus integer|null 最後の createUrl() 呼び出し後の URL 作成のステータス。 yii\web\CompositeUrlRule
$prefix string $rules で宣言されたすべてのルールのパターン部分のプレフィックス。 yii\web\GroupUrlRule
$routePrefix string|null $rules で宣言されたすべてのルールのルート部分のプレフィックス。 yii\web\GroupUrlRule
$ruleConfig array URL ルールのデフォルト設定。 yii\web\GroupUrlRule
$rules array この複合ルール内に含まれるルール。 yii\web\GroupUrlRule

保護されたプロパティ

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

プロパティ 説明 定義元

公開メソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\BaseObject
__construct() コンストラクタ。 yii\base\BaseObject
__get() オブジェクトプロパティの値を返します。 yii\base\BaseObject
__isset() プロパティが設定されている、つまり定義されていて null でないかどうかを確認します。 yii\base\BaseObject
__set() オブジェクトプロパティの値を設定します。 yii\base\BaseObject
__unset() オブジェクトプロパティを null に設定します。 yii\base\BaseObject
canGetProperty() プロパティが読み取り可能かどうかを示す値を返します。 yii\base\BaseObject
canSetProperty() プロパティが設定可能かどうかを示す値を返します。 yii\base\BaseObject
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
createUrl() 指定されたルートとパラメーターに従って URL を作成します。 yii\web\GroupUrlRule
getCreateUrlStatus() 最後の createUrl() 呼び出し後の URL 作成のステータスを返します。 yii\web\CompositeUrlRule
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\web\GroupUrlRule
parseRequest() 指定されたリクエストを解析し、対応するルートとパラメーターを返します。 yii\web\GroupUrlRule

保護されたメソッド

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

メソッド 説明 定義元
createRules() この複合ルール内に含まれるべき URL ルールを作成します。 yii\web\GroupUrlRule
iterateRules() 指定されたルールを反復処理し、それぞれのルールに対して createUrl() を呼び出します。 yii\web\CompositeUrlRule

プロパティの詳細

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

$prefix 公開プロパティ

$rules で宣言されたすべてのルールのパターン部分のプレフィックス。プレフィックスとパターンはスラッシュで区切られます。

public string $prefix null
$routePrefix 公開プロパティ

$rules で宣言されたすべてのルールのルート部分のプレフィックス。プレフィックスとルートはスラッシュで区切られます。このプロパティが設定されていない場合、$prefix の値が使用されます。

public string|null $routePrefix null
$ruleConfig public プロパティ

URLルールのデフォルト設定です。$rules を介して指定された個々のルール設定は、ルールの同じプロパティが設定されている場合、優先されます。

public array $ruleConfig = [
    
'class' => 'yii\web\UrlRule',
]
$rules public プロパティ

この複合ルール内に含まれるルール。このプロパティの形式については、yii\web\UrlManager::$rules を参照してください。

参照

public array $rules = []

メソッドの詳細

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

__call() public メソッド

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

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

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

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

メソッド名

$params array

メソッドのパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出すとき

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() public メソッド

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

コンストラクタ。

デフォルトの実装では、次の2つの処理を行います。

  • 与えられた設定 $config でオブジェクトを初期化します。
  • init() を呼び出します。

このメソッドが子クラスでオーバーライドされている場合、以下をお勧めします。

  • コンストラクタの最後のパラメータは、ここでの $config のような設定配列です。
  • コンストラクタの最後に、親の実装を呼び出します。
public void __construct ( $config = [] )
$config array

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

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

            
__get() public メソッド

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

オブジェクトプロパティの値を返します。

このメソッドは、$value = $object->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)) {
        return $this->$getter();
    } elseif (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\BaseObject::__isset()

プロパティが設定されている、つまり定義されていて null でないかどうかを確認します。

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

プロパティが定義されていない場合は、false が返されることに注意してください。

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

public boolean __isset ( $name )
$name string

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

return boolean

指定されたプロパティが設定されているか (null ではない) どうか。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() public メソッド

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

オブジェクトプロパティの値を設定します。

このメソッドは、$object->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)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() public メソッド

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

オブジェクトプロパティを null に設定します。

このメソッドは、unset($object->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);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
canGetProperty() public メソッド

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

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

プロパティは、次の場合に読み取り可能です。

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

参照 canSetProperty().

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

プロパティ名

$checkVars boolean

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

return boolean

プロパティが読み取り可能かどうか

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public メソッド

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

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

プロパティは、次の場合に書き込み可能です。

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

参照 canGetProperty().

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

プロパティ名

$checkVars boolean

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

return boolean

プロパティが書き込み可能かどうか

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

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

            
createRules() protected メソッド

この複合ルール内に含まれるべき URL ルールを作成します。

protected yii\web\UrlRuleInterface[] createRules ( )
return yii\web\UrlRuleInterface[]

URLルール

                protected function createRules()
{
    $rules = [];
    foreach ($this->rules as $key => $rule) {
        if (!is_array($rule)) {
            $verbs = 'GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS';
            $verb = null;
            if (preg_match("/^((?:(?:$verbs),)*(?:$verbs))\\s+(.*)$/", $key, $matches)) {
                $verb = explode(',', $matches[1]);
                $key = $matches[2];
            }
            $rule = [
                'pattern' => ltrim($this->prefix . '/' . $key, '/'),
                'route' => ltrim($this->routePrefix . '/' . $rule, '/'),
                'verb' => $verb
            ];
        } elseif (isset($rule['pattern'], $rule['route'])) {
            $rule['pattern'] = ltrim($this->prefix . '/' . $rule['pattern'], '/');
            $rule['route'] = ltrim($this->routePrefix . '/' . $rule['route'], '/');
        }
        $rule = Yii::createObject(array_merge($this->ruleConfig, $rule));
        if (!$rule instanceof UrlRuleInterface) {
            throw new InvalidConfigException('URL rule class must implement UrlRuleInterface.');
        }
        $rules[] = $rule;
    }
    return $rules;
}

            
createUrl() public メソッド

指定されたルートとパラメーターに従って URL を作成します。

public string|boolean createUrl ( $manager, $route, $params )
$manager yii\web\UrlManager

URLマネージャ

$route string

ルート。先頭または末尾にスラッシュを含めるべきではありません。

$params array

パラメータ

return string|boolean

作成されたURL。このルールでこのURLを作成できない場合は false。

                public function createUrl($manager, $route, $params)
{
    if ($this->routePrefix === '' || strpos($route, $this->routePrefix . '/') === 0) {
        return parent::createUrl($manager, $route, $params);
    }
    $this->createStatus = UrlRule::CREATE_STATUS_ROUTE_MISMATCH;
    return false;
}

            
getCreateUrlStatus() public メソッド (バージョン 2.0.12 以降で利用可能)

定義元: yii\web\CompositeUrlRule::getCreateUrlStatus()

最後の createUrl() 呼び出し後の URL 作成のステータスを返します。

複数のルールのステータスは、ビット単位のor演算子で結合されます (例: UrlRule::CREATE_STATUS_PARSING_ONLY | UrlRule::CREATE_STATUS_PARAMS_MISMATCH)。

参照

public integer|null getCreateUrlStatus ( )
return integer|null

最後のcreateUrl()呼び出し後のURL作成のステータス。ルールが作成ステータスに関する情報を提供しない場合はnull

                public function getCreateUrlStatus()
{
    return $this->createStatus;
}

            
hasMethod() public メソッド

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

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

デフォルトの実装は、PHP関数method_exists()の呼び出しです。PHPマジックメソッド__call()を実装した場合は、このメソッドをオーバーライドできます。

public boolean hasMethod ( $name )
$name string

メソッド名

return boolean

メソッドが定義されているかどうか

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() public メソッド

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

プロパティが定義されているかどうかを示す値を返します。

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

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

参照

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

プロパティ名

$checkVars boolean

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

return boolean

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

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

            
init() public メソッド

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

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

public void init ( )

                public function init()
{
    $this->prefix = trim((string)$this->prefix, '/');
    $this->routePrefix = $this->routePrefix === null ? $this->prefix : trim($this->routePrefix, '/');
    parent::init();
}

            
iterateRules() protected メソッド (バージョン 2.0.12 以降で利用可能)

定義元: yii\web\CompositeUrlRule::iterateRules()

指定されたルールを反復処理し、それぞれのルールに対して createUrl() を呼び出します。

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

protected boolean|string iterateRules ( $rules, $manager, $route, $params )
$rules yii\web\UrlRuleInterface[]

反復処理するルール。

$manager yii\web\UrlManager

URLマネージャ

$route string

ルート。先頭または末尾にスラッシュを含めるべきではありません。

$params array

パラメータ

return boolean|string

作成されたURL。指定されたルールのいずれもこのURLの作成に使用できない場合はfalse

                protected function iterateRules($rules, $manager, $route, $params)
{
    /* @var $rule UrlRule */
    foreach ($rules as $rule) {
        $url = $rule->createUrl($manager, $route, $params);
        if ($url !== false) {
            $this->createStatus = UrlRule::CREATE_STATUS_SUCCESS;
            return $url;
        }
        if (
            $this->createStatus === null
            || !method_exists($rule, 'getCreateUrlStatus')
            || $rule->getCreateUrlStatus() === null
        ) {
            $this->createStatus = null;
        } else {
            $this->createStatus |= $rule->getCreateUrlStatus();
        }
    }
    return false;
}

            
parseRequest() public メソッド

指定されたリクエストを解析し、対応するルートとパラメーターを返します。

public array|boolean parseRequest ( $manager, $request )
$manager yii\web\UrlManager

URLマネージャ

$request yii\web\Request

リクエストコンポーネント

return array|boolean

解析結果。ルートとパラメータは配列として返されます。falseの場合、このルールはこのパス情報を解析するために使用できないことを意味します。

                public function parseRequest($manager, $request)
{
    $pathInfo = $request->getPathInfo();
    if ($this->prefix === '' || strpos($pathInfo . '/', $this->prefix . '/') === 0) {
        return parent::parseRequest($manager, $request);
    }
    return false;
}