0 フォロワー

クラス yii\web\UrlRule

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

UrlRule は、URL の解析と生成に yii\web\UrlManager によって使用されるルールを表します。

独自の URL 解析と作成ロジックを定義するには、このクラスを拡張し、yii\web\UrlManager::$rules に次のように追加できます。

'rules' => [
    ['class' => 'MyUrlRule', 'pattern' => '...', 'route' => 'site/index', ...],
    // ...
]

公開プロパティ

継承されたプロパティを隠す

プロパティ 説明 定義元
$createStatus integer|null 最後の createUrl() 呼び出し後の URL 作成の状態。 yii\web\UrlRule
$createUrlStatus integer|null 最後の createUrl() 呼び出し後の URL 作成の状態。 yii\web\UrlRule
$defaults array このルールが提供するデフォルトの GET パラメータ (名前 => 値)。 yii\web\UrlRule
$encodeParams boolean パラメータを URL エンコードするかどうかを示す値。 yii\web\UrlRule
$host string|null URL のホスト情報部分を解析および作成するために使用されるパターン (例: https://example.com)。 yii\web\UrlRule
$mode integer|null このルールをリクエストの解析と URL の作成の両方、解析のみ、または作成のみに使用するかどうかを示す値。 yii\web\UrlRule
$name string|null このルールの名前。 yii\web\UrlRule
$normalizer yii\web\UrlNormalizer|array|false|null このルールで使用される yii\web\UrlNormalizer の設定。 yii\web\UrlRule
$pattern string URL のパス情報部分を解析および作成するために使用されるパターン。 yii\web\UrlRule
$placeholders array 一致するパラメータ名のプレースホルダーのリスト。 yii\web\UrlRule
$route string コントローラーアクションへのルート。 yii\web\UrlRule
$suffix string|null このルールで使用される URL サフィックス。 yii\web\UrlRule
$verb string|array|null このルールが一致する必要がある HTTP 動詞 (例: GET、POST、DELETE)。 yii\web\UrlRule

保護されたプロパティ

継承されたプロパティを隠す

プロパティ 説明 定義元

公開メソッド

継承されたメソッドを隠す

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

保護されたメソッド

継承されたメソッドを隠す

メソッド 説明 定義元
getNormalizer() yii\web\UrlRule
getParamRules() パラメータに一致する正規表現のリストを返します。 yii\web\UrlRule
hasNormalizer() yii\web\UrlRule
substitutePlaceholderNames() $placeholders を反復処理し、各プレースホルダーが $matches 配列のキーとして存在するかどうかをチェックします。 yii\web\UrlRule

定数

継承された定数を隠す

定数 説明 定義元
CREATE_STATUS_PARAMS_MISMATCH 4 パラメータの不一致または不足のために、最後の createUrl() 呼び出しによる URL 生成が失敗したことを表します。 yii\web\UrlRule
CREATE_STATUS_PARSING_ONLY 1 ルールが URL の作成をサポートしていないために、最後の createUrl() 呼び出しによる URL 生成が失敗したことを表します。 yii\web\UrlRule
CREATE_STATUS_ROUTE_MISMATCH 2 ルートの不一致のために、最後の createUrl() 呼び出しによる URL 生成が失敗したことを表します。 yii\web\UrlRule
CREATE_STATUS_SUCCESS 0 直前のcreateUrl()呼び出しによるURL生成が成功したことを表します。 yii\web\UrlRule
CREATION_ONLY 2 このルールがURL作成専用であることを示すには、$modeをこの値に設定します。 yii\web\UrlRule
PARSING_ONLY 1 このルールがURL解析専用であることを示すには、$modeをこの値に設定します。 yii\web\UrlRule

プロパティの詳細

継承されたプロパティを隠す

$createStatus protected プロパティ (バージョン 2.0.12 から利用可能)

最後の createUrl() 呼び出し後の URL 作成の状態。

protected integer|null $createStatus null
$createUrlStatus public プロパティ

直前のcreateUrl()呼び出し後のURL作成の状態。ルールが作成状態に関する情報を提供しない場合はnull

$defaults public プロパティ

このルールが提供するデフォルトのGETパラメータ(名前 => 値)。このルールを使用して受信リクエストを解析する場合、このプロパティで宣言された値は$_GETに挿入されます。

public array $defaults = []
$encodeParams public プロパティ

パラメータを URL エンコードするかどうかを示す値。

public boolean $encodeParams true
$host public プロパティ

URL のホスト情報部分を解析および作成するために使用されるパターン (例: https://example.com)。

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

public string|null $host null
$mode public プロパティ

このルールをリクエストの解析とURLの作成の両方、解析のみ、または作成のみに使用するかどうかを示す値。設定されていないか0の場合は、ルールはリクエストの解析とURLの作成の両方です。PARSING_ONLYの場合は、ルールはリクエストの解析専用です。CREATION_ONLYの場合は、ルールはURL作成専用です。

public integer|null $mode null
$name public プロパティ

このルールの名前。設定されていない場合、$patternが名前として使用されます。

public string|null $name null
$normalizer public プロパティ (バージョン 2.0.10 から利用可能)

このルールで使用されるyii\web\UrlNormalizerの構成。nullの場合はyii\web\UrlManager::$normalizerが使用され、falseの場合はこのルールの正規化がスキップされます。

$pattern public プロパティ

URL のパス情報部分を解析および作成するために使用されるパターン。

こちらも参照してください

public string $pattern null
$placeholders protected プロパティ (バージョン 2.0.7 から利用可能)

parseRequest()createUrl()で使用される、一致するパラメータ名のプレースホルダーのリスト。ルールの初期化時に、$patternのパラメータ名はプレースホルダーに置き換えられます。この配列には、元のパラメータ名とそのプレースホルダー間の関係が含まれています。配列のキーはプレースホルダーで、値は元の名前です。

こちらも参照してください

protected array $placeholders = []
$route public プロパティ

コントローラーアクションへのルート。

public string $route null
$suffix public プロパティ

このルールで使用されるURLサフィックス。たとえば、 ".html" を使用して、URLが静的HTMLページを指しているように見せることができます。設定されていない場合、yii\web\UrlManager::$suffixの値が使用されます。

public string|null $suffix null
$verb public プロパティ

このルールが一致する必要があるHTTP動詞(例:GET、POST、DELETE)。複数の動詞に一致する可能性がある場合、配列を使用して表します。このプロパティが設定されていない場合、ルールは任意の動詞に一致できます。このプロパティはリクエストを解析する場合にのみ使用され、URLの作成時には無視されることに注意してください。

public string|array|null $verb null

メソッドの詳細

継承されたメソッドを隠す

__call() publicメソッド

定義されている場所: yii\base\BaseObject::__call()

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

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

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

メソッド名

$params array

メソッドパラメータ

戻り値 mixed

メソッドの戻り値

例外 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

プロパティ名

戻り値 mixed

プロパティの値

例外 yii\base\UnknownPropertyException

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

例外 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

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

戻り値 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

プロパティの値

例外 yii\base\UnknownPropertyException

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

例外 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);
    }
}

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

public string __toString ( )

                public function __toString()
{
    $str = '';
    if ($this->verb !== null) {
        $str .= implode(',', $this->verb) . ' ';
    }
    if ($this->host !== null && strrpos($this->name, $this->host) === false) {
        $str .= $this->host . '/';
    }
    $str .= $this->name;
    if ($str === '') {
        return '/';
    }
    return $str;
}

            
__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

プロパティ名

例外 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

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

戻り値 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

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

戻り値 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 ( )
戻り値 string

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

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

            
createUrl() publicメソッド

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

public 文字列|ブール値 createUrl ( $manager, $route, $params )
$manager yii\web\UrlManager

URLマネージャー

$route string

ルート。先頭と末尾にスラッシュを含んではいけません。

$params array

パラメーター

戻り値 文字列|ブール値

生成されたURL、またはこのルールがこのURLの生成に使用できない場合はfalse

                public function createUrl($manager, $route, $params)
{
    if ($this->mode === self::PARSING_ONLY) {
        $this->createStatus = self::CREATE_STATUS_PARSING_ONLY;
        return false;
    }
    $tr = [];
    // match the route part first
    if ($route !== $this->route) {
        if ($this->_routeRule !== null && preg_match($this->_routeRule, $route, $matches)) {
            $matches = $this->substitutePlaceholderNames($matches);
            foreach ($this->_routeParams as $name => $token) {
                if (isset($this->defaults[$name]) && strcmp($this->defaults[$name], $matches[$name]) === 0) {
                    $tr[$token] = '';
                } else {
                    $tr[$token] = $matches[$name];
                }
            }
        } else {
            $this->createStatus = self::CREATE_STATUS_ROUTE_MISMATCH;
            return false;
        }
    }
    // match default params
    // if a default param is not in the route pattern, its value must also be matched
    foreach ($this->defaults as $name => $value) {
        if (isset($this->_routeParams[$name])) {
            continue;
        }
        if (!isset($params[$name])) {
            // allow omit empty optional params
            // @see https://github.com/yiisoft/yii2/issues/10970
            if (in_array($name, $this->placeholders) && strcmp($value, '') === 0) {
                $params[$name] = '';
            } else {
                $this->createStatus = self::CREATE_STATUS_PARAMS_MISMATCH;
                return false;
            }
        }
        if (strcmp($params[$name], $value) === 0) { // strcmp will do string conversion automatically
            unset($params[$name]);
            if (isset($this->_paramRules[$name])) {
                $tr["<$name>"] = '';
            }
        } elseif (!isset($this->_paramRules[$name])) {
            $this->createStatus = self::CREATE_STATUS_PARAMS_MISMATCH;
            return false;
        }
    }
    // match params in the pattern
    foreach ($this->_paramRules as $name => $rule) {
        if (isset($params[$name]) && !is_array($params[$name]) && ($rule === '' || preg_match($rule, $params[$name]))) {
            $tr["<$name>"] = $this->encodeParams ? urlencode($params[$name]) : $params[$name];
            unset($params[$name]);
        } elseif (!isset($this->defaults[$name]) || isset($params[$name])) {
            $this->createStatus = self::CREATE_STATUS_PARAMS_MISMATCH;
            return false;
        }
    }
    $url = $this->trimSlashes(strtr($this->_template, $tr));
    if ($this->host !== null) {
        $pos = strpos($url, '/', 8);
        if ($pos !== false) {
            $url = substr($url, 0, $pos) . preg_replace('#/+#', '/', substr($url, $pos));
        }
    } elseif (strpos($url, '//') !== false) {
        $url = preg_replace('#/+#', '/', trim($url, '/'));
    }
    if ($url !== '') {
        $url .= ($this->suffix === null ? $manager->suffix : $this->suffix);
    }
    if (!empty($params) && ($query = http_build_query($params)) !== '') {
        $url .= '?' . $query;
    }
    $this->createStatus = self::CREATE_STATUS_SUCCESS;
    return $url;
}

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

最後の createUrl() 呼び出し後の URL 作成の状態を返します。

参照: $createStatus.

public 整数|null getCreateUrlStatus ( )
戻り値 integer|null

直前のcreateUrl()呼び出し後のURL作成の状態。ルールが作成状態に関する情報を提供しない場合はnull

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

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

protected yii\web\UrlNormalizer|null getNormalizer ( $manager )
$manager yii\web\UrlManager

URLマネージャー

                protected function getNormalizer($manager)
{
    if ($this->normalizer === null) {
        return $manager->normalizer;
    }
    return $this->normalizer;
}

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

パラメータに一致する正規表現のリストを返します。

protected 配列 getParamRules ( )
戻り値 array

パラメーターキーと正規表現ルール。

                protected function getParamRules()
{
    return $this->_paramRules;
}

            
hasMethod() publicメソッド

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

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

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

public ブール値 hasMethod ( $name )
$name string

メソッド名

戻り値 boolean

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

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

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

protected ブール値 hasNormalizer ( $manager )
$manager yii\web\UrlManager

URLマネージャー

                protected function hasNormalizer($manager)
{
    return $this->getNormalizer($manager) instanceof UrlNormalizer;
}

            
hasProperty() publicメソッド

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

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

プロパティは、以下の場合に定義されます。

  • 指定された名前に関連付けられたゲッターまたはセッターメソッドがクラスに存在する場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに、指定された名前のメンバー変数がある場合(`$checkVars` がtrueの場合)。

こちらも参照してください

public ブール値 hasProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

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

戻り値 boolean

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

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

            
init() publicメソッド

このルールを初期化します。

public void init ( )

                public function init()
{
    if ($this->pattern === null) {
        throw new InvalidConfigException('UrlRule::pattern must be set.');
    }
    if ($this->route === null) {
        throw new InvalidConfigException('UrlRule::route must be set.');
    }
    if (is_array($this->normalizer)) {
        $normalizerConfig = array_merge(['class' => UrlNormalizer::className()], $this->normalizer);
        $this->normalizer = Yii::createObject($normalizerConfig);
    }
    if ($this->normalizer !== null && $this->normalizer !== false && !$this->normalizer instanceof UrlNormalizer) {
        throw new InvalidConfigException('Invalid config for UrlRule::normalizer.');
    }
    if ($this->verb !== null) {
        if (is_array($this->verb)) {
            foreach ($this->verb as $i => $verb) {
                $this->verb[$i] = strtoupper($verb);
            }
        } else {
            $this->verb = [strtoupper($this->verb)];
        }
    }
    if ($this->name === null) {
        $this->name = $this->pattern;
    }
    $this->preparePattern();
}

            
parseRequest() publicメソッド

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

public 配列|ブール値 parseRequest ( $manager, $request )
$manager yii\web\UrlManager

URLマネージャー

$request yii\web\Request

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

戻り値 配列|ブール値

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

                public function parseRequest($manager, $request)
{
    if ($this->mode === self::CREATION_ONLY) {
        return false;
    }
    if (!empty($this->verb) && !in_array($request->getMethod(), $this->verb, true)) {
        return false;
    }
    $suffix = (string) ($this->suffix === null ? $manager->suffix : $this->suffix);
    $pathInfo = $request->getPathInfo();
    $normalized = false;
    if ($this->hasNormalizer($manager)) {
        $pathInfo = $this->getNormalizer($manager)->normalizePathInfo($pathInfo, $suffix, $normalized);
    }
    if ($suffix !== '' && $pathInfo !== '') {
        $n = strlen($suffix);
        if (substr_compare($pathInfo, $suffix, -$n, $n) === 0) {
            $pathInfo = substr($pathInfo, 0, -$n);
            if ($pathInfo === '') {
                // suffix alone is not allowed
                return false;
            }
        } else {
            return false;
        }
    }
    if ($this->host !== null) {
        $pathInfo = strtolower($request->getHostInfo()) . ($pathInfo === '' ? '' : '/' . $pathInfo);
    }
    if (!preg_match($this->pattern, $pathInfo, $matches)) {
        return false;
    }
    $matches = $this->substitutePlaceholderNames($matches);
    foreach ($this->defaults as $name => $value) {
        if (!isset($matches[$name]) || $matches[$name] === '') {
            $matches[$name] = $value;
        }
    }
    $params = $this->defaults;
    $tr = [];
    foreach ($matches as $name => $value) {
        if (isset($this->_routeParams[$name])) {
            $tr[$this->_routeParams[$name]] = $value;
            unset($params[$name]);
        } elseif (isset($this->_paramRules[$name])) {
            $params[$name] = $value;
        }
    }
    if ($this->_routeRule !== null) {
        $route = strtr($this->route, $tr);
    } else {
        $route = $this->route;
    }
    Yii::debug("Request parsed with URL rule: {$this->name}", __METHOD__);
    if ($normalized) {
        // pathInfo was changed by normalizer - we need also normalize route
        return $this->getNormalizer($manager)->normalizeRoute([$route, $params]);
    }
    return [$route, $params];
}

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

$placeholders を反復処理し、各プレースホルダーが $matches 配列のキーとして存在するかどうかをチェックします。

見つかった場合、このプレースホルダーキーを一致するパラメーターの適切な名前に置き換えます。parseRequest()createUrl()で使用されます。

参照: $placeholders.

protected 配列 substitutePlaceholderNames ( 配列 $matches )
$matches array

preg_match()呼び出しの結果

戻り値 array

プレースホルダーキーが置き換えられた入力配列

                protected function substitutePlaceholderNames(array $matches)
{
    foreach ($this->placeholders as $placeholder => $name) {
        if (isset($matches[$placeholder])) {
            $matches[$name] = $matches[$placeholder];
            unset($matches[$placeholder]);
        }
    }
    return $matches;
}