0 フォロワー

クラス yii\web\UrlNormalizer

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

UrlNormalizer は、yii\web\UrlManager および yii\web\UrlRule の URL を正規化します。

公開プロパティ

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

プロパティ 説明 定義元
$action integer|callable|null ルート正規化中に実行するアクション。 yii\web\UrlNormalizer
$collapseSlashes boolean スラッシュをまとめるかどうか。例えば、site///indexsite/index に変換されます。 yii\web\UrlNormalizer
$normalizeTrailingSlash boolean 末尾のスラッシュをルール設定のサフィックスに従って正規化するかどうか yii\web\UrlNormalizer

公開メソッド

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

メソッド 説明 定義元
__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
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\base\BaseObject
normalizePathInfo() 指定された pathInfo を正規化します。 yii\web\UrlNormalizer
normalizeRoute() 指定された $route の正規化アクションを実行します。 yii\web\UrlNormalizer

保護されたメソッド

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

メソッド 説明 定義元
collapseSlashes() $pathInfo 内の連続するスラッシュをまとめます。例えば、site///indexsite/index に変換します。 yii\web\UrlNormalizer
normalizeTrailingSlash() $suffix が末尾のスラッシュを持っているかどうかに応じて、$pathInfo から末尾のスラッシュを追加または削除します。 yii\web\UrlNormalizer

定数

継承された定数を非表示

定数 説明 定義元
ACTION_NOT_FOUND 404 ルート正規化中に 404 エラーページを表示することを表します。 yii\web\UrlNormalizer
ACTION_REDIRECT_PERMANENT 301 ルート正規化中に永続的なリダイレクトを表します。 yii\web\UrlNormalizer
ACTION_REDIRECT_TEMPORARY 302 ルート正規化中に一時的なリダイレクトを表します。 yii\web\UrlNormalizer

プロパティの詳細

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

$action public プロパティ

ルート正規化中に実行するアクション。利用可能なオプションは次のとおりです。

  • null - 特別なアクションは実行されません
  • 301 - リクエストは永続的なリダイレクトを使用して正規化された URL にリダイレクトされる必要があります
  • 302 - リクエストは一時的なリダイレクトを使用して正規化された URL にリダイレクトされる必要があります
  • 404 - yii\web\NotFoundHttpException がスローされます
  • callable - カスタムユーザーコールバック。例:

    function ($route, $normalizer) {
        // use custom action for redirections
        $route[1]['oldRoute'] = $route[0];
        $route[0] = 'site/redirect';
        return $route;
    }
    
public integer|callable|null $action self::ACTION_REDIRECT_PERMANENT
$collapseSlashes public プロパティ

スラッシュをまとめるかどうか。例えば、site///indexsite/index に変換されます。

public boolean $collapseSlashes true
$normalizeTrailingSlash public プロパティ

末尾のスラッシュをルール設定のサフィックスに従って正規化するかどうか

メソッド詳細

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

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

            
collapseSlashes() protected メソッド

$pathInfo 内の連続するスラッシュをまとめます。例えば、site///indexsite/index に変換します。

protected string collapseSlashes ( $pathInfo )
$pathInfo string

生のパス情報。

return string

正規化されたパス情報。

                protected function collapseSlashes($pathInfo)
{
    return ltrim(preg_replace('#/{2,}#', '/', $pathInfo), '/');
}

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

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

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

  • クラスが、指定された名前に関連付けられたgetterまたはsetterメソッドを持っている場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合($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 メソッド

定義場所: yii\base\BaseObject::init()

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

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

public void init ( )

                public function init()
{
}

            
normalizePathInfo() public メソッド

指定された pathInfo を正規化します。

public string normalizePathInfo ( $pathInfo, $suffix, &$normalized false )
$pathInfo string

正規化対象のPathInfo

$suffix string

現在のルール接尾辞

$normalized boolean

$pathInfoが正規化中に変更された場合、この変数は true に設定されます

return string

正規化されたPathInfo

                public function normalizePathInfo($pathInfo, $suffix, &$normalized = false)
{
    if (empty($pathInfo)) {
        return $pathInfo;
    }
    $sourcePathInfo = $pathInfo;
    if ($this->collapseSlashes) {
        $pathInfo = $this->collapseSlashes($pathInfo);
    }
    if ($this->normalizeTrailingSlash === true) {
        $pathInfo = $this->normalizeTrailingSlash($pathInfo, $suffix);
    }
    $normalized = $sourcePathInfo !== $pathInfo;
    return $pathInfo;
}

            
normalizeRoute() public メソッド

指定された $route の正規化アクションを実行します。

public array normalizeRoute ( $route )
$route array

正規化対象のルート

return array

正規化されたルート

throws yii\base\InvalidConfigException

無効な正規化アクションが使用された場合。

throws yii\web\UrlNormalizerRedirectException

正規化にリダイレクトが必要な場合。

throws yii\web\NotFoundHttpException

正規化により、ルートに一致するアクションが存在しないことが示唆される場合。

                public function normalizeRoute($route)
{
    if ($this->action === null) {
        return $route;
    } elseif ($this->action === static::ACTION_REDIRECT_PERMANENT || $this->action === static::ACTION_REDIRECT_TEMPORARY) {
        throw new UrlNormalizerRedirectException([$route[0]] + $route[1], $this->action);
    } elseif ($this->action === static::ACTION_NOT_FOUND) {
        throw new NotFoundHttpException(Yii::t('yii', 'Page not found.'));
    } elseif (is_callable($this->action)) {
        return call_user_func($this->action, $route, $this);
    }
    throw new InvalidConfigException('Invalid normalizer action.');
}

            
normalizeTrailingSlash() protected メソッド

$suffix が末尾のスラッシュを持っているかどうかに応じて、$pathInfo から末尾のスラッシュを追加または削除します。

protected string normalizeTrailingSlash ( $pathInfo, $suffix )
$pathInfo string

生のパス情報。

$suffix string
return string

正規化されたパス情報。

                protected function normalizeTrailingSlash($pathInfo, $suffix)
{
    if (substr($suffix, -1) === '/' && substr($pathInfo, -1) !== '/') {
        $pathInfo .= '/';
    } elseif (substr($suffix, -1) !== '/' && substr($pathInfo, -1) === '/') {
        $pathInfo = rtrim($pathInfo, '/');
    }
    return $pathInfo;
}