0 关注者

类 yii\web\AssetBundle

继承yii\web\AssetBundle » yii\base\BaseObject
实现yii\base\Configurable
子类yii\captcha\CaptchaAsset, yii\grid\GridViewAsset, yii\validators\PunycodeAsset, yii\validators\ValidationAsset, yii\web\JqueryAsset, yii\web\YiiAsset, yii\widgets\ActiveFormAsset, yii\widgets\MaskedInputAsset, yii\widgets\PjaxAsset
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/web/AssetBundle.php

AssetBundle 代表一个资产文件的集合,例如 CSS、JS、图片。

每个资产包都有一个唯一的名称,在应用程序中使用的所有资产包中全局标识它。该名称是 完全限定类名,它代表该类。

资产包可以依赖于其他资产包。当在视图中注册资产包时,所有其依赖的资产包将自动注册。

有关 AssetBundle 的更多详细信息和使用信息,请参阅 资产指南文章

公共属性

隐藏继承的属性

属性 类型 描述 定义于
$basePath string 包含此捆绑包中资产文件的 Web 可访问目录。 yii\web\AssetBundle
$baseUrl string 列出的相对资产文件的基 URL $js$css yii\web\AssetBundle
$css array 此捆绑包包含的 CSS 文件列表。 yii\web\AssetBundle
$cssOptions array 将传递给 yii\web\View::registerCssFile() 的选项,当注册此捆绑包中的 CSS 文件时。 yii\web\AssetBundle
$depends array 此捆绑包依赖的捆绑包类名列表。 yii\web\AssetBundle
$js array 此捆绑包包含的 JavaScript 文件列表。 yii\web\AssetBundle
$jsOptions array 将传递给 yii\web\View::registerJsFile() 的选项,当注册此捆绑包中的 JS 文件时。 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() 检查属性是否已设置,即已定义且不为空。 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

属性详细信息

隐藏继承的属性

$basePath 公共属性

包含此捆绑包中资产文件的 Web 可访问目录。

如果 $sourcePath 已设置,则此属性将被 yii\web\AssetManager 覆盖,当它从 $sourcePath 发布资产文件时。

您可以使用目录或目录的别名。

public string $basePath null
$baseUrl 公共属性

列出的相对资产文件的基 URL $js$css

如果 $sourcePath 已设置,则此属性将被 yii\web\AssetManager 覆盖,当它从 $sourcePath 发布资产文件时。

您可以使用 URL 或 URL 的别名。

public string $baseUrl null
$css 公共属性

此捆绑包包含的 CSS 文件列表。每个 CSS 文件都可以用 $js 中解释的三种格式之一指定。

请注意,仅应使用正斜杠 "/" 作为目录分隔符。

public array $css = []
$cssOptions 公共属性

将传递给 yii\web\View::registerCssFile() 的选项,当注册此捆绑包中的 CSS 文件时。

public array $cssOptions = []
$depends 公共属性

此捆绑包依赖的捆绑包类名列表。

例如

public $depends = [
   'yii\web\YiiAsset',
   'yii\bootstrap\BootstrapAsset',
];
public array $depends = []
$js 公共属性

此捆绑包包含的 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 开始可用。

请注意,仅应使用正斜杠 "/" 作为目录分隔符。

public array $js = []
$jsOptions 公共属性

将传递给 yii\web\View::registerJsFile() 的选项,当注册此捆绑包中的 JS 文件时。

public array $jsOptions = []
$publishOptions 公共属性

当发布资源捆绑包时传递给 yii\web\AssetManager::publish() 的选项。此属性仅在设置了 $sourcePath 时使用。

public array $publishOptions = []
$sourcePath 公共属性

包含此资源捆绑包的源资源文件的目录。源资源文件是 Web 应用程序源代码存储库的一部分的文件。

如果包含源资源文件的目录不可通过 Web 访问,则必须设置此属性。通过设置此属性,yii\web\AssetManager 会在资源捆绑包在页面上注册时自动将源资源文件发布到可通过 Web 访问的目录。

如果未设置此属性,则意味着源资源文件位于 $basePath 下。

您可以使用目录或目录的别名。

另请参见 $publishOptions

public string|null $sourcePath null

方法详情

隐藏继承的方法

__call() 公共方法

定义于: 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() 公共方法

定义于: yii\base\BaseObject::__construct()

构造函数。

默认实现执行两件事

  • 使用给定的配置 $config 初始化对象。
  • 调用 init()

如果此方法在子类中被重写,建议

  • 构造函数的最后一个参数是一个配置数组,如这里的 $config
  • 在构造函数的末尾调用父实现。
public void __construct ( $config = [] )
$config array

将用于初始化对象属性的名称 - 值对

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() 公共方法

定义于: yii\base\BaseObject::__get()

返回对象属性的值。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 $value = $object->property; 时会隐式调用。

另请参见 __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() 公共方法

定义于: yii\base\BaseObject::__isset()

检查属性是否已设置,即已定义且不为空。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 isset($object->property) 时会隐式调用。

注意,如果属性未定义,将返回 false。

另请参见 https://php.ac.cn/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;
    }
    return false;
}

            
__set() 公共方法

定义于: yii\base\BaseObject::__set()

设置对象属性的值。

不要直接调用此方法,因为它是一个 PHP 魔术方法,会在执行 $object->property = $value; 时被隐式调用。

另请参阅 __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() 公共方法

定义于: yii\base\BaseObject::__unset()

将对象属性设置为 null。

不要直接调用此方法,因为它是一个 PHP 魔术方法,会在执行 unset($object->property) 时被隐式调用。

注意,如果属性未定义,此方法将不做任何操作。如果属性是只读的,它将抛出一个异常。

另请参阅 https://php.ac.cn/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() 公共方法

定义于: yii\base\BaseObject::canGetProperty()

返回一个值,指示是否可以读取属性。

一个属性是可读的,如果

  • 该类具有与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
  • 该类具有与指定名称相同的成员变量(当 $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() 公共方法

定义于: yii\base\BaseObject::canSetProperty()

返回一个值,指示是否可以设置属性。

一个属性是可写的,如果

  • 该类具有与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
  • 该类具有与指定名称相同的成员变量(当 $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() 公共静态方法
自 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();
}

            
hasMethod() 公共方法

定义于: 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() 公共方法

定义于: 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 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), '/');
    }
}

            
publish() 公共方法

如果其源代码不在 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);
            }
        }
    }
}

            
register() 公共静态方法

使用视图注册此资产捆绑包。

public static static register ( $view )
$view yii\web\View

要注册的视图

return yii\web\AssetBundle

已注册的资产捆绑包实例

                public static function register($view)
{
    return $view->registerAssetBundle(get_called_class());
}

            
registerAssetFiles() 公共方法

使用给定的视图注册 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);
        }
    }
}