クラス 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///index は site/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///index を site/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 |
プロパティの詳細
ルート正規化中に実行するアクション。利用可能なオプションは次のとおりです。
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; }
スラッシュをまとめるかどうか。例えば、site///index は site/index に変換されます。
末尾のスラッシュをルール設定のサフィックスに従って正規化するかどうか
メソッド詳細
定義元: 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()");
}
定義元: 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();
}
定義元: 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);
}
定義元: yii\base\BaseObject::__isset()
プロパティが設定されているか、つまり定義されていて null ではないかを確認します。
このメソッドは、isset($object->property) を実行するときに暗黙的に呼び出される PHP のマジックメソッドであるため、直接呼び出さないでください。
プロパティが定義されていない場合は、false が返されることに注意してください。
| 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;
}
定義元: 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);
}
}
定義元: yii\base\BaseObject::__unset()
オブジェクトのプロパティを null に設定します。
このメソッドは、unset($object->property) を実行するときに暗黙的に呼び出される 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);
}
}
定義元: 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);
}
定義元: 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);
}
::class を使用してください。
定義元: yii\base\BaseObject::className()
このクラスの完全修飾名を返します。
| public static string className ( ) | ||
| return | string |
このクラスの完全修飾名。 |
|---|---|---|
public static function className()
{
return get_called_class();
}
$pathInfo 内の連続するスラッシュをまとめます。例えば、site///index を site/index に変換します。
| protected string collapseSlashes ( $pathInfo ) | ||
| $pathInfo | string |
生のパス情報。 |
| return | string |
正規化されたパス情報。 |
|---|---|---|
protected function collapseSlashes($pathInfo)
{
return ltrim(preg_replace('#/{2,}#', '/', $pathInfo), '/');
}
定義場所: 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);
}
定義場所: 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);
}
| public void init ( ) |
public function init()
{
}
指定された pathInfo を正規化します。
| public string normalizePathInfo ( $pathInfo, $suffix, &$normalized = false ) | ||
| $pathInfo | string |
正規化対象のPathInfo |
| $suffix | string |
現在のルール接尾辞 |
| $normalized | boolean |
$pathInfoが正規化中に変更された場合、この変数は |
| 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;
}
指定された $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.');
}
$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;
}
コメントするには、サインアップまたはログインしてください。