0 フォロワー

抽象クラス yii\web\CompositeUrlRule

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

CompositeUrlRule は、複数のより単純なルールで構成される URL ルールクラスの基底クラスです。

公開プロパティ

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

プロパティ 説明 定義元
$createStatus 整数|null 最後の createUrl() 呼び出し後の URL 作成の状態。 yii\web\CompositeUrlRule
$createUrlStatus 整数|null 最後の createUrl() 呼び出し後の URL 作成の状態。 yii\web\CompositeUrlRule
$rules yii\web\UrlRuleInterface[] この複合ルールに含まれる URL ルール。 yii\web\CompositeUrlRule

保護されたプロパティ

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

プロパティ 説明 定義元

公開メソッド

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

メソッド 説明 定義元
__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\CompositeUrlRule
getCreateUrlStatus() 最後の createUrl() 呼び出し後の URL 作成の状態を返します。 yii\web\CompositeUrlRule
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\web\CompositeUrlRule
parseRequest() 指定されたリクエストを解析し、対応するルートとパラメータを返します。 yii\web\CompositeUrlRule

保護されたメソッド

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

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

プロパティの詳細

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

$createStatus 保護されたプロパティ (バージョン 2.0.12 以降で使用可能)

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

protected 整数|null $createStatus null
$createUrlStatus 公開プロパティ

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

$rules protected プロパティ

この複合ルールに含まれるURLルール。このプロパティは、init()createRules()の戻り値によって設定されます。

メソッドの詳細

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

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

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

            
createRules() protected abstract メソッド

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

protected abstract yii\web\UrlRuleInterface[] createRules ( )
戻り値 yii\web\UrlRuleInterface[]

URLルール

                abstract protected function createRules();

            
createUrl() publicメソッド

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

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

URLマネージャー

$route string

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

$params array

パラメーター

戻り値 string|boolean

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

                public function createUrl($manager, $route, $params)
{
    $this->createStatus = UrlRule::CREATE_STATUS_SUCCESS;
    $url = $this->iterateRules($this->rules, $manager, $route, $params);
    if ($url !== false) {
        return $url;
    }
    if ($this->createStatus === UrlRule::CREATE_STATUS_SUCCESS) {
        // create status was not changed - there is no rules configured
        $this->createStatus = UrlRule::CREATE_STATUS_PARSING_ONLY;
    }
    return false;
}

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

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

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

参照

public integer|null getCreateUrlStatus ( )
戻り値 整数|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

メソッド名

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

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

戻り値 boolean

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

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

            
init() publicメソッド

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

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

public void init ( )

                public function init()
{
    parent::init();
    $this->rules = $this->createRules();
}

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

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

参照 createUrl().

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

ループ処理するルール。

$manager yii\web\UrlManager

URLマネージャー

$route string

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

$params array

パラメーター

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

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

戻り値 array|boolean

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

                public function parseRequest($manager, $request)
{
    foreach ($this->rules as $rule) {
        /* @var $rule UrlRule */
        $result = $rule->parseRequest($manager, $request);
        if (YII_DEBUG) {
            Yii::debug([
                'rule' => method_exists($rule, '__toString') ? $rule->__toString() : get_class($rule),
                'match' => $result !== false,
                'parent' => self::className(),
            ], __METHOD__);
        }
        if ($result !== false) {
            return $result;
        }
    }
    return false;
}