micropackage / classnames
一个简单的PHP实用类,用于条件性地连接类名。
Requires
- php: >=7.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-12 16:37:28 UTC
README
🧬 关于类名
此包包含用于条件性地连接HTML类名的简单实用类。它受到了JavaScript classnames 包的启发。
💾 安装
composer require micropackage/classnames
🕹 使用
Micropackage\ClassNames\ClassNames
类构造函数接受任意数量的参数,可以是字符串或数组。字符串参数和字符串数组的值将被无条件使用。如果参数是具有字符串键的数组,则如果与给定键关联的值是真实的,则将使用键作为类名。
use Micropackage\ClassNames\ClassNames; new ClassNames( 'foo', 'bar' ); // => 'foo bar' new ClassNames( 'foo', [ 'bar' => true ] ); // => 'foo bar' new ClassNames( [ 'foo' => true, 'bar' => false ] ); // => 'foo' new ClassNames( 'foo', [ 'foo' => false ] ); // => '' new ClassNames( [ 'foo', 'bar' => false, 'baz' ] ); // => 'foo baz'
完整示例
<?php /** * Example WordPress template using ACF */ use Micropackage\ClassNames\ClassNames; $text_color = get_filed( 'text-color' ); $classnames = new ClassNames( 'main-hero', [ 'has-background' => get_filed( 'has-background' ), // Conditionally add background class "has-{$text_color}-color" => $text_color, // Only add color class if color is not null ] ); ?> <div class="<?php echo $classnames; ?>"> <!-- (...) --> </div>
方法
add
向当前集合添加类名。接受任意数量的参数,就像构造函数一样。
$classnames = new ClassNames( 'foo' ); if ( is_bar() ) { $classnames->add( 'bar', [ 'baz' => is_baz() ] ); }
返回 数组
所有包含的类名。
remove
从当前集合中删除类名。接受任意数量的参数,可以是字符串或字符串数组。
$classnames = new ClassNames( 'foo', 'bar', 'baz', 'duck' ); if ( ! is_bar() ) { $classnames->remove( 'bar', [ 'baz', 'duck' ] ); }
返回 数组
所有包含的类名。
build
从当前类名集合创建字符串。
$classnames = new ClassNames( 'foo', [ 'bar' => true, 'baz' => false ] ); $result = $classnames->build(); // => 'foo bar'
返回 字符串
buildAttribute
从当前类名集合创建带有HTML类属性的字符串。
参数
字符串
$before 可选前缀
字符串
$after 可选后缀
$classnames = new ClassNames( 'foo', [ 'bar' => true, 'baz' => false ] ); $result = $classnames->buildAttribute( ' ', ' tabndex="-1"'); // => ' class="foo bar" tabindex="-1"'
返回 字符串
静态方法
ClassName::get
接受与构造函数相同的参数并返回一个类名字符串。这是创建实例并调用 $instance->build()
的简写。
$result = ClassNames::get( 'foo', [ 'bar' => true, 'baz' => false ] ); // => 'foo bar'
返回 字符串
ClassName::getAttribute
接受与构造函数相同的参数并返回一个类属性字符串。这是创建实例并调用 $instance->buildAttribute()
的简写。
可以将包含键 before
和/或 after
的数组作为参数之一传递。
$result = ClassNames::getAttribute( 'foo', [ 'bar' => true, 'baz' => false ], [ 'before' => 'prefix ', 'after' => ' sufix', ] ); // => 'prefix class="foo bar" sufix'
返回 字符串
ClassName::print
输出 ClassName::get
的结果。
ClassNames::print( 'foo', [ 'bar' => true, 'baz' => false ] ); // echoes 'foo bar'
返回 void
ClassName::printAttribute
输出 ClassName::getAttribute
的结果。
ClassNames::getAttribute( 'foo', [ 'bar' => true, 'baz' => false ], [ 'before' => 'prefix ', 'after' => ' sufix', ] ); // echoes 'prefix class="foo bar" sufix'
返回 void
📦 关于微封装项目
微封装 - 如其名所示 - 是具有少量可重用代码的微包,特别有助于WordPress开发。
目标是拥有多个包,通过定义结构来组合它们以创建更大的东西。
微封装由 BracketSpace 维护。
📖 更新日志
📃 许可证
GNU通用公共许可证 (GPL) v3.0。有关更多信息,请参阅 LICENSE 文件。
© 致谢
此包受到了由 Jed Watson 开发的JavaScript classnames 的启发。