0 フォロワー

クラス yii\web\AssetManager

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

AssetManager はアセットバンドルの構成と読み込みを管理します。

AssetManager はデフォルトで yii\web\Application のアプリケーションコンポーネントとして構成されています。Yii::$app->assetManager を通してそのインスタンスにアクセスできます。

次の例に示すように、アプリケーション構成の components に配列を追加することで、その構成を変更できます。

'assetManager' => [
    'bundles' => [
        // you can override AssetBundle configs here
    ],
]

AssetManager の詳細および使用方法については、アセットに関するガイド記事を参照してください。

公開プロパティ

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

プロパティ 説明 定義元
$afterCopy callable|null サブディレクトリまたはファイルが正常にコピーされた後に呼び出される PHP コールバック。 yii\web\AssetManager
$appendTimestamp boolean 公開されたすべてのアセットの URL にタイムスタンプを付加するかどうか。 yii\web\AssetManager
$assetMap string[] ソースアセットファイル(キー)からターゲットアセットファイル(値)へのマッピング。 yii\web\AssetManager
$basePath string 公開されたアセットファイルを格納するルートディレクトリ。 yii\web\AssetManager
$baseUrl string 公開されたアセットファイルにアクセスできるベース URL。 yii\web\AssetManager
$beforeCopy callable|null 各サブディレクトリまたはファイルのコピー前に呼び出される PHP コールバック。 yii\web\AssetManager
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$bundles array|false アセットバンドルの構成のリスト。 yii\web\AssetManager
$converter yii\web\AssetConverterInterface アセットコンバーター。 yii\web\AssetManager
$dirMode integer 新しく生成されたアセットディレクトリに設定されるアクセス許可。 yii\web\AssetManager
$fileMode integer|null 新しく公開されたアセットファイルに設定されるアクセス許可。 yii\web\AssetManager
$forceCopy boolean 公開されているディレクトリがターゲットディレクトリに存在する場合でもコピーするかどうか。 yii\web\AssetManager
$hashCallback callable|null アセットディレクトリの生成のためにハッシュを生成するために呼び出されるコールバック。 yii\web\AssetManager
$linkAssets boolean アセットファイルの公開にシンボリックリンクを使用するかどうか。 yii\web\AssetManager

公開メソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトをクローンすることによってオブジェクトが作成された後に呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているか、つまり定義されていて null でないかをチェックします。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティを null に設定します。 yii\base\Component
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
behaviors() このコンポーネントが動作するビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティが読み取り可能かどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定可能かどうかを示す値を返します。 yii\base\Component
checkBasePathPermission() basePath が存在し、書き込み可能かどうかを確認します。 yii\web\AssetManager
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
getActualAssetUrl() 指定されたアセットの実際の URL を返します。パラメータなし。 yii\web\AssetManager
getAssetPath() 指定されたアセットの実際のファイルパスを返します。 yii\web\AssetManager
getAssetUrl() 指定されたアセットの実際の URL を返します。 yii\web\AssetManager
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getBundle() 名前付きアセットバンドルを返します。 yii\web\AssetManager
getConverter() アセットコンバーターを返します。 yii\web\AssetManager
getPublishedPath() ファイルパスの公開されたパスを返します。 yii\web\AssetManager
getPublishedUrl() 公開されたファイルパスの URL を返します。 yii\web\AssetManager
hasEventHandlers() 名前付きイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() コンポーネントを初期化します。 yii\web\AssetManager
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
publish() ファイルまたはディレクトリを公開します。 yii\web\AssetManager
setConverter() アセットコンバーターを設定します。 yii\web\AssetManager
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
hash() ディレクトリパスの CRC32 ハッシュを生成します。衝突は MD5 よりも高いですが、はるかに小さなハッシュ文字列を生成します。 yii\web\AssetManager
loadBundle() 名前でアセットバンドルクラスをロードします。 yii\web\AssetManager
loadDummyBundle() 名前でダミーバンドルをロードします。 yii\web\AssetManager
publishDirectory() ディレクトリを公開します。 yii\web\AssetManager
publishFile() ファイルを公開します。 yii\web\AssetManager
resolveAsset() yii\web\AssetManager

プロパティの詳細

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

$afterCopy 公開プロパティ

サブディレクトリまたはファイルのコピーが正常に完了した後に呼び出されるPHPのコールバックです。このオプションは、ディレクトリを公開する場合にのみ使用されます。コールバックのシグネチャは、$beforeCopyと同じです。これは、yii\helpers\FileHelper::copyDirectory()afterCopyパラメータとして渡されます。

public callable|null $afterCopy null
$appendTimestamp public プロパティ (バージョン 2.0.3 以降で利用可能)

公開されたすべてのアセットのURLにタイムスタンプを追加するかどうか。これがtrueの場合、公開されたアセットのURLは/path/to/asset?v=timestampのように見える場合があります。ここでtimestampは、公開されたアセットファイルの最終更新時刻です。通常、アセットに対してHTTPキャッシングを有効にしている場合は、このプロパティをtrueに設定する必要があります。これにより、アセットが更新されたときにキャッシュを破棄できます。

public boolean $appendTimestamp false
$assetMap public プロパティ

ソースアセットファイル(キー)からターゲットアセットファイル(値)へのマッピング。

このプロパティは、一部のアセットバンドルで誤ったアセットファイルパスを修正するために提供されます。アセットバンドルがビューに登録されると、そのcss配列とjs配列内の各相対アセットファイルがこのマップに対して調べられます。キーのいずれかがアセットファイルの最後の部分(yii\web\AssetBundle::$sourcePathが利用可能な場合は、これがプレフィックスとして付加されます)であることが判明した場合、対応する値がアセットを置き換え、ビューに登録されます。たとえば、アセットファイルmy/path/to/jquery.jsはキーjquery.jsと一致します。

ターゲットアセットファイルは、絶対URL、ドメイン相対URL('/'から始まる)、または$baseUrlおよび$basePathに対する相対パスである必要があることに注意してください。

次の例では、jquery.min.jsで終わるすべてのアセットが、$baseUrlおよび$basePathに対する相対パスであるjquery/dist/jquery.jsに置き換えられます。

[
    'jquery.min.js' => 'jquery/dist/jquery.js',
]

マップ値を指定するときにエイリアスを使用することもできます。たとえば

[
    'jquery.min.js' => '@web/js/jquery/jquery.js',
]
public string[] $assetMap = []
$basePath public プロパティ

公開されたアセットファイルを格納するルートディレクトリ。

public string $basePath '@webroot/assets'
$baseUrl public プロパティ

公開されたアセットファイルにアクセスできるベース URL。

public string $baseUrl '@web/assets'
$beforeCopy public プロパティ

各サブディレクトリまたはファイルのコピー前に呼び出されるPHPのコールバックです。このオプションは、ディレクトリを公開する場合にのみ使用されます。コールバックがfalseを返した場合、サブディレクトリまたはファイルのコピー操作はキャンセルされます。

コールバックのシグネチャは、function ($from, $to)である必要があります。ここで$fromはコピー元のサブディレクトリまたはファイル、$toはコピー先です。

これは、yii\helpers\FileHelper::copyDirectory()beforeCopyパラメータとして渡されます。

public callable|null $beforeCopy null
$bundles public プロパティ

アセットバンドルの構成のリスト。このプロパティは、アセットバンドルをカスタマイズするために提供されます。getBundle()によってバンドルがロードされるときに、ここに指定された対応する構成がある場合、構成がバンドルに適用されます。

配列キーはアセットバンドル名であり、通常は先頭のバックスラッシュなしのアセットバンドルクラス名です。配列値は、対応する構成です。値がfalseの場合、対応するアセットバンドルが無効になっていることを意味し、getBundle()はnullを返す必要があります。

このプロパティがfalseの場合、アセットバンドル機能全体が無効になっていることを意味し、getBundle()は常にnullを返します。

次の例は、Bootstrapウィジェットで使用されるbootstrap cssファイルを無効にする方法を示しています(独自のスタイルを使用する場合)。

[
    'yii\bootstrap\BootstrapAsset' => [
        'css' => [],
    ],
]
public array|false $bundles = []
$converter public プロパティ

アセットコンバーター。このプロパティの型はゲッターとセッターで異なることに注意してください。詳細は、getConverter()およびsetConverter()を参照してください。

$dirMode public プロパティ

新しく生成されたアセットディレクトリに設定されるアクセス許可。この値は、PHPのchmod()関数で使用されます。umaskは適用されません。デフォルトは0775です。これは、ディレクトリが所有者とグループによって読み書き可能であり、他のユーザーに対しては読み取り専用であることを意味します。

public integer $dirMode 0775
$fileMode public プロパティ

新しく公開されたアセットファイルに設定されるアクセス許可。この値は、PHPのchmod()関数で使用されます。umaskは適用されません。設定しない場合、アクセス許可は現在の環境によって決定されます。

public integer|null $fileMode null
$forceCopy public プロパティ

公開対象のディレクトリがターゲットディレクトリに存在する場合でも、コピーするかどうかを指定します。このオプションは、ディレクトリを公開する場合にのみ使用されます。開発段階では、公開されたディレクトリが常に最新の状態になるように、このオプションをtrueに設定したい場合があります。本番環境のサーバーでは、パフォーマンスが著しく低下するため、このオプションをtrueに設定しないでください。

public boolean $forceCopy false
$hashCallback public プロパティ (バージョン 2.0.6 から利用可能)

アセットディレクトリの生成時にハッシュを生成するために呼び出されるコールバック。コールバックのシグネチャは次のとおりである必要があります。

function ($path)

ここで、$path はアセットのパスです。$path は、アセットファイルが存在するディレクトリまたは単一のファイルのいずれかであることに注意してください。url() で相対パスを使用する CSS ファイルの場合、ハッシュの実装では、ファイルのパスではなくファイルのディレクトリパスを使用して、相対アセットファイルをコピーに含める必要があります。

これが設定されていない場合、アセットマネージャーは hash メソッドでデフォルトの CRC32 と filemtime を使用します。

MD4 ハッシュを使用した実装例

function ($path) {
    return hash('md4', $path);
}
public callable|null $hashCallback null
$linkAssets public プロパティ

アセットファイルを公開するためにシンボリックリンクを使用するかどうかを指定します。デフォルトは false で、アセットファイルは $basePath にコピーされることを意味します。シンボリックリンクを使用すると、公開されたアセットが常にソースアセットと一致し、コピー操作が不要になるという利点があります。これは開発中に特に役立ちます。

ただし、シンボリックリンクを使用するには、ホスティング環境に特別な要件があります。特に、シンボリックリンクは、Linux/Unix、および Windows Vista/2008 以降でのみサポートされています。

さらに、一部のWebサーバーでは、リンクされたアセットがWebユーザーにアクセスできるように適切に構成する必要があります。たとえば、Apache Webサーバーの場合、Webフォルダーに次の構成ディレクティブを追加する必要があります。

Options FollowSymLinks
public boolean $linkAssets false

メソッドの詳細

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

__call() public メソッド

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

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

このメソッドは、アタッチされたビヘイビアに指定されたメソッドがあるかどうかを確認し、利用可能な場合は実行します。

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

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

メソッド名

$params array

メソッドのパラメーター

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

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

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public メソッド

定義元: yii\base\Component::__clone()

このメソッドは、既存のオブジェクトをクローンすることによってオブジェクトが作成された後に呼び出されます。

古いオブジェクトにアタッチされているため、すべてのビヘイビアを削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__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\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • ゲッターによって定義されたプロパティ:ゲッターの結果を返します
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を返します

このメソッドは、$value = $component->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)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (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\Component::__isset()

プロパティが設定されているか、つまり定義されていて null でないかをチェックします。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ:プロパティが設定されているかどうかを返します
  • ビヘイビアのプロパティ:プロパティが設定されているかどうかを返します
  • 存在しないプロパティの場合はfalseを返します

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

https://www.php.net/manual/en/function.isset.phpも参照してください。

public boolean __isset ( $name )
$name string

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

return boolean

指定されたプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public メソッド

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

コンポーネントプロパティの値を設定します。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ:プロパティ値を設定します
  • "on xyz"の形式のイベント:イベント "xyz"にハンドラーをアタッチします
  • "as xyz"の形式のビヘイビア:"xyz"という名前のビヘイビアをアタッチします
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を設定します

このメソッドは、$component->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)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public メソッド

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

コンポーネントプロパティを null に設定します。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティ値をnullに設定します
  • ビヘイビアのプロパティ: プロパティ値をnullに設定します

このメソッドは、unset($component->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);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
attachBehavior() public メソッド

定義元: yii\base\Component::attachBehavior()

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、指定された構成に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach()メソッドを呼び出すことによって、ビヘイビアオブジェクトはこのコンポーネントにアタッチされます。

以下も参照してください: detachBehavior().

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの構成。次のいずれかになります

  • yii\base\Behavior オブジェクト
  • ビヘイビアクラスを指定する文字列
  • Yii::createObject() に渡してビヘイビアオブジェクトを作成するオブジェクト構成配列。
return yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public メソッド

定義元: yii\base\Component::attachBehaviors()

コンポーネントにビヘイビアのリストをアタッチします。

各ビヘイビアは、その名前でインデックス化され、yii\base\Behavior オブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための構成配列である必要があります。

以下も参照してください: attachBehavior().

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチされるビヘイビアのリスト

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() public メソッド

定義元: yii\base\Component::behaviors()

このコンポーネントが動作するビヘイビアのリストを返します。

子クラスは、このメソッドをオーバーライドして、ビヘイビアとして動作させたいものを指定できます。

このメソッドの戻り値は、ビヘイビア名でインデックス化されたビヘイビアオブジェクトまたは構成の配列である必要があります。ビヘイビア構成は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります。

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスはyii\base\Behaviorを拡張する必要があることに注意してください。ビヘイビアは名前を使用するか、匿名でアタッチできます。名前が配列キーとして使用されている場合、この名前を使用して、ビヘイビアは後でgetBehavior()を使用して取得したり、detachBehavior()を使用してデタッチしたりできます。匿名ビヘイビアは取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、自動的に(必要に応じて)コンポーネントにアタッチされます。

public array behaviors ( )
return array

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

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

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

プロパティは、次の場合に読み取ることができます。

  • クラスに、指定された名前に関連付けられたgetterメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに、指定された名前を持つメンバー変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合($checkBehaviorsがtrueの場合)。

以下も参照してください: canSetProperty().

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティを読み取ることができるかどうか

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public メソッド

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

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

プロパティは、次の場合に書き込むことができます。

  • クラスに、指定された名前に関連付けられたsetterメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに、指定された名前を持つメンバー変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の書き込み可能なプロパティがある場合($checkBehaviorsがtrueの場合)。

以下も参照してください: canGetProperty().

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティを書き込むことができるかどうか

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

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

basePath が存在し、書き込み可能かどうかを確認します。

public void checkBasePathPermission ( )

                public function checkBasePathPermission()
{
    // if the check is been done already, skip further checks
    if ($this->_isBasePathPermissionChecked) {
        return;
    }
    if (!is_dir($this->basePath)) {
        throw new InvalidConfigException("The directory does not exist: {$this->basePath}");
    }
    if (!is_writable($this->basePath)) {
        throw new InvalidConfigException("The directory is not writable by the Web process: {$this->basePath}");
    }
    $this->_isBasePathPermissionChecked = true;
}

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

            
detachBehavior() public メソッド

定義元: yii\base\Component::detachBehavior()

コンポーネントからビヘイビアをデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

return yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合はNull。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public メソッド

定義元: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public メソッド

定義元: yii\base\Component::ensureBehaviors()

behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

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

指定されたアセットの実際の URL を返します。パラメータなし。

実際の URL は、指定されたアセットパスの前に yii\web\AssetBundle::$baseUrl または yii\web\AssetManager::$baseUrl のどちらかを付加することによって取得されます。

public string getActualAssetUrl ( $bundle, $asset )
$bundle yii\web\AssetBundle

アセットファイルが属するアセットバンドル

$asset string

アセットパス。これは、yii\web\AssetBundle::$js または yii\web\AssetBundle::$css にリストされているアセットのいずれかである必要があります。

return string

指定されたアセットの実際の URL。

                public function getActualAssetUrl($bundle, $asset)
{
    if (($actualAsset = $this->resolveAsset($bundle, $asset)) !== false) {
        if (strncmp($actualAsset, '@web/', 5) === 0) {
            $asset = substr($actualAsset, 5);
            $baseUrl = Yii::getAlias('@web');
        } else {
            $asset = Yii::getAlias($actualAsset);
            $baseUrl = $this->baseUrl;
        }
    } else {
        $baseUrl = $bundle->baseUrl;
    }
    if (!Url::isRelative($asset) || strncmp($asset, '/', 1) === 0) {
        return $asset;
    }
    return "$baseUrl/$asset";
}

            
getAssetPath() public メソッド

指定されたアセットの実際のファイルパスを返します。

public string|false getAssetPath ( $bundle, $asset )
$bundle yii\web\AssetBundle

アセットファイルが属するアセットバンドル

$asset string

アセットパス。これは、yii\web\AssetBundle::$js または yii\web\AssetBundle::$css にリストされているアセットのいずれかである必要があります。

return string|false

実際のファイルパス。アセットが絶対 URL として指定されている場合は false

                public function getAssetPath($bundle, $asset)
{
    if (($actualAsset = $this->resolveAsset($bundle, $asset)) !== false) {
        return Url::isRelative($actualAsset) ? $this->basePath . '/' . $actualAsset : false;
    }
    return Url::isRelative($asset) ? $bundle->basePath . '/' . $asset : false;
}

            
getAssetUrl() public メソッド

指定されたアセットの実際の URL を返します。

実際の URL は、指定されたアセットパスの前に yii\web\AssetBundle::$baseUrl または yii\web\AssetManager::$baseUrl のどちらかを付加することによって取得されます。

public string getAssetUrl ( $bundle, $asset, $appendTimestamp null )
$bundle yii\web\AssetBundle

アセットファイルが属するアセットバンドル

$asset string

アセットパス。これは、yii\web\AssetBundle::$js または yii\web\AssetBundle::$css にリストされているアセットのいずれかである必要があります。

$appendTimestamp boolean|null

URLにタイムスタンプを付加するかどうか。

return string

指定されたアセットの実際の URL。

                public function getAssetUrl($bundle, $asset, $appendTimestamp = null)
{
    $assetUrl = $this->getActualAssetUrl($bundle, $asset);
    $assetPath = $this->getAssetPath($bundle, $asset);
    $withTimestamp = $this->appendTimestamp;
    if ($appendTimestamp !== null) {
        $withTimestamp = $appendTimestamp;
    }
    if ($withTimestamp && $assetPath && ($timestamp = @filemtime($assetPath)) > 0) {
        return "$assetUrl?v=$timestamp";
    }
    return $assetUrl;
}

            
getBehavior() public メソッド

定義元: yii\base\Component::getBehavior()

名前付きビヘイビアオブジェクトを返します。

public yii\base\Behavior|null getBehavior ( $name )
$name string

ビヘイビア名

return yii\base\Behavior|null

ビヘイビアオブジェクト。ビヘイビアが存在しない場合は null

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public メソッド

定義元: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされているすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

このコンポーネントにアタッチされたビヘイビアのリスト

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getBundle() public メソッド

名前付きアセットバンドルを返します。

このメソッドは最初に $bundles でバンドルを探します。見つからない場合、$name をアセットバンドルのクラスとして扱い、その新しいインスタンスを作成します。

public yii\web\AssetBundle getBundle ( $name, $publish true )
$name string

アセットバンドルのクラス名(先頭のバックスラッシュなし)

$publish boolean

返される前にアセットバンドル内のアセットファイルを公開するかどうか。これを false に設定した場合、アセットファイルを公開するには、手動で AssetBundle::publish() を呼び出す必要があります。

return yii\web\AssetBundle

アセットバンドルのインスタンス

throws yii\base\InvalidConfigException

$name が有効なアセットバンドルを参照していない場合

                public function getBundle($name, $publish = true)
{
    if ($this->bundles === false) {
        return $this->loadDummyBundle($name);
    } elseif (!isset($this->bundles[$name])) {
        return $this->bundles[$name] = $this->loadBundle($name, [], $publish);
    } elseif ($this->bundles[$name] instanceof AssetBundle) {
        return $this->bundles[$name];
    } elseif (is_array($this->bundles[$name])) {
        return $this->bundles[$name] = $this->loadBundle($name, $this->bundles[$name], $publish);
    } elseif ($this->bundles[$name] === false) {
        return $this->loadDummyBundle($name);
    }
    throw new InvalidConfigException("Invalid asset bundle configuration: $name");
}

            
getConverter() public メソッド

アセットコンバーターを返します。

public yii\web\AssetConverterInterface getConverter ( )
return yii\web\AssetConverterInterface

アセットコンバーター。

                public function getConverter()
{
    if ($this->_converter === null) {
        $this->_converter = Yii::createObject(AssetConverter::className());
    } elseif (is_array($this->_converter) || is_string($this->_converter)) {
        if (is_array($this->_converter) && !isset($this->_converter['class'])) {
            $this->_converter['class'] = AssetConverter::className();
        }
        $this->_converter = Yii::createObject($this->_converter);
    }
    return $this->_converter;
}

            
getPublishedPath() public メソッド

ファイルパスの公開されたパスを返します。

このメソッドは公開を実行しません。ファイルまたはディレクトリが公開されているかどうか、および公開先を通知するだけです。

public string|false getPublishedPath ( $path )
$path string

公開するディレクトリまたはファイルパス

return string|false

公開されたファイルパスの文字列。ファイルまたはディレクトリが存在しない場合は False

                public function getPublishedPath($path)
{
    $path = Yii::getAlias($path);
    if (isset($this->_published[$path])) {
        return $this->_published[$path][0];
    }
    if (is_string($path) && ($path = realpath($path)) !== false) {
        return $this->basePath . DIRECTORY_SEPARATOR . $this->hash($path) . (is_file($path) ? DIRECTORY_SEPARATOR . basename($path) : '');
    }
    return false;
}

            
getPublishedUrl() public メソッド

公開されたファイルパスの URL を返します。

このメソッドは公開を実行しません。ファイルパスが公開されているかどうか、およびそれにアクセスするための URL を通知するだけです。

public string|false getPublishedUrl ( $path )
$path string

公開するディレクトリまたはファイルパス

return string|false

ファイルまたはディレクトリの公開された URL の文字列。ファイルまたはディレクトリが存在しない場合は False。

                public function getPublishedUrl($path)
{
    $path = Yii::getAlias($path);
    if (isset($this->_published[$path])) {
        return $this->_published[$path][1];
    }
    if (is_string($path) && ($path = realpath($path)) !== false) {
        return $this->baseUrl . '/' . $this->hash($path) . (is_file($path) ? '/' . basename($path) : '');
    }
    return false;
}

            
hasEventHandlers() public メソッド

定義元: yii\base\Component::hasEventHandlers()

名前付きイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

return boolean

イベントにアタッチされたハンドラがあるかどうか。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() public メソッド

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

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

メソッドは、以下の場合に定義されます

  • クラスが指定された名前のメソッドを持っている
  • アタッチされたビヘイビアが指定された名前のメソッドを持っている($checkBehaviors が true の場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

return boolean

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

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public メソッド

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

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティが定義されている条件は以下のとおりです。

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

こちらも参照

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

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

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

            
hash() protected メソッド

ディレクトリパスの CRC32 ハッシュを生成します。衝突は MD5 よりも高いですが、はるかに小さなハッシュ文字列を生成します。

protected string hash ( $path )
$path string

ハッシュされる文字列。

return string

ハッシュ化された文字列。

                protected function hash($path)
{
    if (is_callable($this->hashCallback)) {
        return call_user_func($this->hashCallback, $path);
    }
    $path = (is_file($path) ? dirname($path) : $path) . filemtime($path);
    return sprintf('%x', crc32($path . Yii::getVersion() . '|' . $this->linkAssets));
}

            
init() public メソッド

コンポーネントを初期化します。

public void init ( )
throws yii\base\InvalidConfigException

$basePathが存在しない場合。

                public function init()
{
    parent::init();
    $this->basePath = Yii::getAlias($this->basePath);
    $this->basePath = realpath($this->basePath);
    $this->baseUrl = rtrim(Yii::getAlias($this->baseUrl), '/');
}

            
loadBundle() protected メソッド

名前でアセットバンドルクラスをロードします。

protected yii\web\AssetBundle loadBundle ( $name, $config = [], $publish true )
$name string

バンドル名

$config array

バンドルオブジェクトの設定

$publish boolean

バンドルを公開するかどうか

throws yii\base\InvalidConfigException

設定が無効な場合

                protected function loadBundle($name, $config = [], $publish = true)
{
    if (!isset($config['class'])) {
        $config['class'] = $name;
    }
    /* @var $bundle AssetBundle */
    $bundle = Yii::createObject($config);
    if ($publish) {
        $bundle->publish($this);
    }
    return $bundle;
}

            
loadDummyBundle() protected メソッド

名前でダミーバンドルをロードします。

protected yii\web\AssetBundle loadDummyBundle ( $name )
$name string

                protected function loadDummyBundle($name)
{
    if (!isset($this->_dummyBundles[$name])) {
        $bundle = Yii::createObject(['class' => $name]);
        $bundle->sourcePath = null;
        $bundle->js = [];
        $bundle->css = [];
        $this->_dummyBundles[$name] = $bundle;
    }
    return $this->_dummyBundles[$name];
}

            
off() public メソッド

定義元: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーをデタッチします。

このメソッドはon()の反対です。

注意: イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラのみが削除され、このワイルドカードに一致するプレーン名で登録されたハンドラは残ります。

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

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

削除するイベントハンドラ。nullの場合、指定されたイベントにアタッチされたすべてのハンドラが削除されます。

return boolean

ハンドラが見つかり、デタッチされた場合

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() public メソッド

定義元: yii\base\Component::on()

イベントにイベントハンドラーをアタッチします。

イベントハンドラは有効なPHPコールバックでなければなりません。以下にいくつかの例を示します。

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

イベントハンドラは以下のシグネチャで定義する必要があります。

function ($event)

ここで、$eventは、イベントに関連付けられたパラメータを含むyii\base\Eventオブジェクトです。

2.0.14以降、イベント名をワイルドカードパターンとして指定できます。

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

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

public void on ( $name, $handler, $data null, $append true )
$name string

イベント名

$handler コールバック

イベントハンドラ

$data mixed

イベントがトリガーされたときにイベントハンドラに渡されるデータ。イベントハンドラが呼び出されると、このデータはyii\base\Event::$dataを介してアクセスできます。

$append boolean

新しいイベントハンドラを既存のハンドラリストの最後に追加するかどうか。falseの場合、新しいハンドラは既存のハンドラリストの先頭に挿入されます。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
publish() public メソッド

ファイルまたはディレクトリを公開します。

このメソッドは、指定されたファイルまたはディレクトリを$basePathにコピーして、Webサーバー経由でアクセスできるようにします。

アセットがファイルの場合、不要なファイルコピーを避けるために、ファイルの変更時刻が確認されます。

アセットがディレクトリの場合、その下のすべてのファイルとサブディレクトリが再帰的に公開されます。$forceCopyがfalseの場合、メソッドはターゲットディレクトリの存在を確認するだけで、繰り返しコピーすることを避けます(これは非常にコストがかかります)。

デフォルトでは、ディレクトリを公開するとき、名前がドット "." で始まるサブディレクトリとファイルは公開されません。この動作を変更したい場合は、$optionsパラメータで説明されているように "beforeCopy" オプションを指定できます。

注意: まれなシナリオでは、公開されたアセットを保持するディレクトリの作成中に、重要ではない問題が一度だけ発生する競合状態が発生する可能性があります。この問題は、「publish()」呼び出しをトリガーするはずのすべてのリソースを事前に「リクエスト」し、システムが稼働する前にアプリケーションのデプロイフェーズでそれを行うことで、完全に回避できます。詳細については、次の議論を参照してください: https://code.google.com/archive/p/yii/issues/2579

public array publish ( $path, $options = [] )
$path string

公開するアセット(ファイルまたはディレクトリ)

$options array

ディレクトリを公開するときに適用されるオプション。次のオプションがサポートされています。

  • only: array、コピーする場合にファイルパスが一致する必要があるパターンのリスト。
  • except: array、コピーから除外する場合にファイルまたはディレクトリが一致する必要があるパターンのリスト。
  • caseSensitive: boolean、"only" または "except" で指定されたパターンを大文字と小文字を区別するかどうか。デフォルトはtrueです。
  • beforeCopy: callback、各サブディレクトリまたはファイルをコピーする前に呼び出されるPHPコールバック。これが設定されている場合、$beforeCopyを上書きします。
  • afterCopy: callback、サブディレクトリまたはファイルが正常にコピーされた後に呼び出されるPHPコールバック。これが設定されている場合、$afterCopyを上書きします。
  • forceCopy: boolean、公開するディレクトリがターゲットディレクトリに見つかった場合でもコピーするかどうか。このオプションは、ディレクトリを公開する場合にのみ使用されます。これが設定されている場合、$forceCopyを上書きします。
return array

アセットが公開されるパス(ディレクトリまたはファイルパス)とURL。

throws yii\base\InvalidArgumentException

公開するアセットが存在しない場合。

throws yii\base\InvalidConfigException

ターゲットディレクトリ$basePathが書き込み可能でない場合。

                public function publish($path, $options = [])
{
    $path = Yii::getAlias($path);
    if (isset($this->_published[$path])) {
        return $this->_published[$path];
    }
    if (!is_string($path) || ($src = realpath($path)) === false) {
        throw new InvalidArgumentException("The file or directory to be published does not exist: $path");
    }
    if (!is_readable($path)) {
        throw new InvalidArgumentException("The file or directory to be published is not readable: $path");
    }
    if (is_file($src)) {
        return $this->_published[$path] = $this->publishFile($src);
    }
    return $this->_published[$path] = $this->publishDirectory($src, $options);
}

            
publishDirectory() protected メソッド

ディレクトリを公開します。

protected string[] publishDirectory ( $src, $options )
$src string

公開するアセットディレクトリ

$options array

ディレクトリを公開するときに適用されるオプション。次のオプションがサポートされています。

  • only: array、コピーする場合にファイルパスが一致する必要があるパターンのリスト。
  • except: array、コピーから除外する場合にファイルまたはディレクトリが一致する必要があるパターンのリスト。
  • caseSensitive: boolean、"only" または "except" で指定されたパターンを大文字と小文字を区別するかどうか。デフォルトはtrueです。
  • beforeCopy: callback、各サブディレクトリまたはファイルをコピーする前に呼び出されるPHPコールバック。これが設定されている場合、$beforeCopyを上書きします。
  • afterCopy: callback、サブディレクトリまたはファイルが正常にコピーされた後に呼び出されるPHPコールバック。これが設定されている場合、$afterCopyを上書きします。
  • forceCopy: boolean、公開するディレクトリがターゲットディレクトリに見つかった場合でもコピーするかどうか。このオプションは、ディレクトリを公開する場合にのみ使用されます。これが設定されている場合、$forceCopyを上書きします。
return string[]

アセットが公開されるパスディレクトリとURL。

throws yii\base\InvalidArgumentException

公開するアセットが存在しない場合。

                protected function publishDirectory($src, $options)
{
    $this->checkBasePathPermission();
    $dir = $this->hash($src);
    $dstDir = $this->basePath . DIRECTORY_SEPARATOR . $dir;
    if ($this->linkAssets) {
        if (!is_dir($dstDir)) {
            FileHelper::createDirectory(dirname($dstDir), $this->dirMode, true);
            try { // fix #6226 symlinking multi threaded
                symlink($src, $dstDir);
            } catch (\Exception $e) {
                if (!is_dir($dstDir)) {
                    throw $e;
                }
            }
        }
    } elseif (!empty($options['forceCopy']) || ($this->forceCopy && !isset($options['forceCopy'])) || !is_dir($dstDir)) {
        $opts = array_merge(
            $options,
            [
                'dirMode' => $this->dirMode,
                'fileMode' => $this->fileMode,
                'copyEmptyDirectories' => false,
            ]
        );
        if (!isset($opts['beforeCopy'])) {
            if ($this->beforeCopy !== null) {
                $opts['beforeCopy'] = $this->beforeCopy;
            } else {
                $opts['beforeCopy'] = function ($from, $to) {
                    return strncmp(basename($from), '.', 1) !== 0;
                };
            }
        }
        if (!isset($opts['afterCopy']) && $this->afterCopy !== null) {
            $opts['afterCopy'] = $this->afterCopy;
        }
        FileHelper::copyDirectory($src, $dstDir, $opts);
    }
    return [$dstDir, $this->baseUrl . '/' . $dir];
}

            
publishFile() protected メソッド

ファイルを公開します。

protected string[] publishFile ( $src )
$src string

公開するアセットファイル

return string[]

アセットが公開されるパスとURL。

throws yii\base\InvalidArgumentException

公開するアセットが存在しない場合。

                protected function publishFile($src)
{
    $this->checkBasePathPermission();
    $dir = $this->hash($src);
    $fileName = basename($src);
    $dstDir = $this->basePath . DIRECTORY_SEPARATOR . $dir;
    $dstFile = $dstDir . DIRECTORY_SEPARATOR . $fileName;
    if (!is_dir($dstDir)) {
        FileHelper::createDirectory($dstDir, $this->dirMode, true);
    }
    if ($this->linkAssets) {
        if (!is_file($dstFile)) {
            try { // fix #6226 symlinking multi threaded
                symlink($src, $dstFile);
            } catch (\Exception $e) {
                if (!is_file($dstFile)) {
                    throw $e;
                }
            }
        }
    } elseif (@filemtime($dstFile) < @filemtime($src)) {
        copy($src, $dstFile);
        if ($this->fileMode !== null) {
            @chmod($dstFile, $this->fileMode);
        }
    }
    if ($this->appendTimestamp && ($timestamp = @filemtime($dstFile)) > 0) {
        $fileName = $fileName . "?v=$timestamp";
    }
    return [$dstFile, $this->baseUrl . "/$dir/$fileName"];
}

            
resolveAsset() protected メソッド

protected string|false resolveAsset ( $bundle, $asset )
$bundle yii\web\AssetBundle
$asset string

                protected function resolveAsset($bundle, $asset)
{
    if (isset($this->assetMap[$asset])) {
        return $this->assetMap[$asset];
    }
    if ($bundle->sourcePath !== null && Url::isRelative($asset)) {
        $asset = $bundle->sourcePath . '/' . $asset;
    }
    $n = mb_strlen($asset, Yii::$app->charset);
    foreach ($this->assetMap as $from => $to) {
        $n2 = mb_strlen($from, Yii::$app->charset);
        if ($n2 <= $n && substr_compare($asset, $from, $n - $n2, $n2) === 0) {
            return $to;
        }
    }
    return false;
}

            
setConverter() public メソッド

アセットコンバーターを設定します。

public void setConverter ( $value )
$value array|yii\web\AssetConverterInterface

アセットコンバーター。これは、yii\web\AssetConverterInterface を実装するオブジェクト、またはアセットコンバーターオブジェクトを作成するために使用できる設定配列のいずれかです。

                public function setConverter($value)
{
    $this->_converter = $value;
}

            
trigger() public メソッド

定義元: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドはイベントの発生を表します。クラスレベルのハンドラーを含む、イベントにアタッチされたすべてのハンドラーを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンス。設定されていない場合は、デフォルトの yii\base\Event オブジェクトが作成されます。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}