クラス yii\web\AssetBundle
AssetBundleは、CSS、JS、画像などのアセットファイルのコレクションを表します。
各アセットバンドルには、アプリケーションで使用されるすべてのアセットバンドルの中でグローバルにそれを識別する一意の名前があります。名前は、それを表すクラスの完全修飾クラス名です。
アセットバンドルは、他のアセットバンドルに依存できます。アセットバンドルをビューに登録すると、その依存するすべてのアセットバンドルが自動的に登録されます。
AssetBundleの詳細と使用方法については、アセットに関するガイド記事を参照してください。
パブリックプロパティ
プロパティ | 型 | 説明 | 定義元 |
---|---|---|---|
$basePath | string | このバンドル内のアセットファイルを含む、Webからアクセス可能なディレクトリ。 | yii\web\AssetBundle |
$baseUrl | string | $jsおよび$cssにリストされている相対アセットファイルのベースURL。 | yii\web\AssetBundle |
$css | array | このバンドルに含まれるCSSファイルのリスト。 | yii\web\AssetBundle |
$cssOptions | array | このバンドル内のCSSファイルを登録するときにyii\web\View::registerCssFile()に渡されるオプション。 | yii\web\AssetBundle |
$depends | array | このバンドルが依存するバンドルクラス名のリスト。 | yii\web\AssetBundle |
$js | array | このバンドルに含まれるJavaScriptファイルのリスト。 | yii\web\AssetBundle |
$jsOptions | array | このバンドル内のJSファイルを登録するときにyii\web\View::registerJsFile()に渡されるオプション。 | yii\web\AssetBundle |
$publishOptions | array | アセットバンドルが公開されるときにyii\web\AssetManager::publish()に渡されるオプション。 | yii\web\AssetBundle |
$sourcePath | string|null | このアセットバンドルのソースアセットファイルを含むディレクトリ。 | yii\web\AssetBundle |
パブリックメソッド
メソッド | 説明 | 定義元 |
---|---|---|
__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\web\AssetBundle |
publish() | ソースコードがWebアクセス可能なディレクトリにない場合、アセットバンドルを公開します。 | yii\web\AssetBundle |
register() | このアセットバンドルをビューに登録します。 | yii\web\AssetBundle |
registerAssetFiles() | CSSファイルとJSファイルを指定されたビューに登録します。 | yii\web\AssetBundle |
プロパティの詳細
このバンドル内のアセットファイルを含む、Webからアクセス可能なディレクトリ。
$sourcePathが設定されている場合、このプロパティは、yii\web\AssetManagerが$sourcePathからアセットファイルを公開するときに上書きされます。
ディレクトリまたはディレクトリのエイリアスのいずれかを使用できます。
$jsおよび$cssにリストされている相対アセットファイルのベースURL。
$sourcePathが設定されている場合、このプロパティは、yii\web\AssetManagerが$sourcePathからアセットファイルを公開するときに上書きされます。
URLまたはURLのエイリアスのいずれかを使用できます。
このバンドルに含まれる CSS ファイルのリストです。各 CSS ファイルは、$js で説明されている 3 つの形式のいずれかで指定できます。
ディレクトリ区切り文字としては、フォワードスラッシュ "/" のみを使用してください。
このバンドル内のCSSファイルを登録するときにyii\web\View::registerCssFile()に渡されるオプション。
このバンドルが依存するバンドルクラス名のリスト。
例:
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
このバンドルに含まれる JavaScript ファイルのリストです。各 JavaScript ファイルは、以下のいずれかの形式で指定できます。
- 外部アセットを表す絶対 URL。たとえば、
https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js
または//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js
など。 - ローカルアセットを表す相対パス(例:
js/main.js
)。ローカルアセットの実際のファイルパスは、相対パスに $basePath をプレフィックスとして付与することで決定でき、アセットの実際の URL は、相対パスに $baseUrl をプレフィックスとして付与することで決定できます。 - 配列。最初の要素は、上記のように記述された URL または相対パスであり、キー => 値のペアのリストは、このエントリの $jsOptions 設定を上書きするために使用されます。この機能はバージョン 2.0.7 以降で使用可能です。
ディレクトリ区切り文字としては、フォワードスラッシュ "/" のみを使用してください。
このバンドル内のJSファイルを登録するときにyii\web\View::registerJsFile()に渡されるオプション。
アセットバンドルが公開される際に yii\web\AssetManager::publish() に渡されるオプション。このプロパティは、$sourcePath が設定されている場合にのみ使用されます。
このアセットバンドルのソースアセットファイルが含まれるディレクトリ。ソースアセットファイルは、Web アプリケーションのソースコードリポジトリの一部であるファイルです。
ソースアセットファイルを含むディレクトリが Web アクセス可能でない場合は、このプロパティを設定する必要があります。このプロパティを設定することにより、yii\web\AssetManager は、アセットバンドルがページに登録されると、ソースアセットファイルを Web アクセス可能なディレクトリに自動的に公開します。
このプロパティを設定しない場合は、ソースアセットファイルが $basePath の下に配置されていることを意味します。
ディレクトリまたはディレクトリのエイリアスのいずれかを使用できます。
$publishOptions も参照してください。
メソッドの詳細
定義元: 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();
}
定義元: 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()
プロパティが定義されているかどうかを示す値を返します。
プロパティは、以下の場合に定義されます。
- クラスが指定された名前に関連付けられたゲッターまたはセッターメソッドを持つ場合 (この場合、プロパティ名は大文字小文字を区別しません)。
- クラスが指定された名前のメンバー変数を持つ場合 (
$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()
{
if ($this->sourcePath !== null) {
$this->sourcePath = rtrim(Yii::getAlias($this->sourcePath), '/\\');
}
if ($this->basePath !== null) {
$this->basePath = rtrim(Yii::getAlias($this->basePath), '/\\');
}
if ($this->baseUrl !== null) {
$this->baseUrl = rtrim(Yii::getAlias($this->baseUrl), '/');
}
}
ソースコードがWebアクセス可能なディレクトリにない場合、アセットバンドルを公開します。
また、アセットコンバーターを使用して、非 CSS または JS ファイル (例: LESS、Sass) を対応する CSS または JS ファイルに変換しようとします。
public void publish ( $am ) | ||
$am | yii\web\AssetManager |
アセットの公開を実行するアセットマネージャー |
public function publish($am)
{
if ($this->sourcePath !== null && !isset($this->basePath, $this->baseUrl)) {
list($this->basePath, $this->baseUrl) = $am->publish($this->sourcePath, $this->publishOptions);
}
if (isset($this->basePath, $this->baseUrl) && ($converter = $am->getConverter()) !== null) {
foreach ($this->js as $i => $js) {
if (is_array($js)) {
$file = array_shift($js);
if (Url::isRelative($file)) {
$js = ArrayHelper::merge($this->jsOptions, $js);
array_unshift($js, $converter->convert($file, $this->basePath));
$this->js[$i] = $js;
}
} elseif (Url::isRelative($js)) {
$this->js[$i] = $converter->convert($js, $this->basePath);
}
}
foreach ($this->css as $i => $css) {
if (is_array($css)) {
$file = array_shift($css);
if (Url::isRelative($file)) {
$css = ArrayHelper::merge($this->cssOptions, $css);
array_unshift($css, $converter->convert($file, $this->basePath));
$this->css[$i] = $css;
}
} elseif (Url::isRelative($css)) {
$this->css[$i] = $converter->convert($css, $this->basePath);
}
}
}
}
このアセットバンドルをビューに登録します。
public static static register ( $view ) | ||
$view | yii\web\View |
登録するビュー |
return | yii\web\AssetBundle |
登録されたアセットバンドルのインスタンス |
---|
public static function register($view)
{
return $view->registerAssetBundle(get_called_class());
}
CSSファイルとJSファイルを指定されたビューに登録します。
public void registerAssetFiles ( $view ) | ||
$view | yii\web\View |
アセットファイルを登録するビュー。 |
public function registerAssetFiles($view)
{
$manager = $view->getAssetManager();
foreach ($this->js as $js) {
if (is_array($js)) {
$file = array_shift($js);
$options = ArrayHelper::merge($this->jsOptions, $js);
$view->registerJsFile($manager->getAssetUrl($this, $file, ArrayHelper::getValue($options, 'appendTimestamp')), $options);
} elseif ($js !== null) {
$view->registerJsFile($manager->getAssetUrl($this, $js), $this->jsOptions);
}
}
foreach ($this->css as $css) {
if (is_array($css)) {
$file = array_shift($css);
$options = ArrayHelper::merge($this->cssOptions, $css);
$view->registerCssFile($manager->getAssetUrl($this, $file, ArrayHelper::getValue($options, 'appendTimestamp')), $options);
} elseif ($css !== null) {
$view->registerCssFile($manager->getAssetUrl($this, $css), $this->cssOptions);
}
}
}
サインアップ または ログイン してコメントしてください。