micropackage/classnames

一个简单的PHP实用类,用于条件性地连接类名。

1.0.0 2021-04-12 09:42 UTC

This package is auto-updated.

Last update: 2024-09-12 16:37:28 UTC


README

BracketSpace Micropackage Latest Stable Version PHP from Packagist Total Downloads License

Micropackage logo

🧬 关于类名

此包包含用于条件性地连接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 的启发。