PHPackages                             dobaniashish/clsx - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dobaniashish/clsx

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dobaniashish/clsx
=================

A PHP utility for constructing html attribute strings conditionally.

v1.0.0(1y ago)1765MITPHPPHP ^7.4 || ^8.0

Since Aug 14Pushed 1y ago1 watchersCompare

[ Source](https://github.com/dobaniashish/clsx)[ Packagist](https://packagist.org/packages/dobaniashish/clsx)[ Docs](https://github.com/dobaniashish/clsx)[ RSS](/packages/dobaniashish-clsx/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

clsx for PHP
============

[](#clsx-for-php)

[![](https://github.com/dobaniashish/clsx/workflows/PHPUnit/badge.svg)](https://github.com/dobaniashish/clsx/actions/workflows/phpunit.yml)

A PHP utility for constructing html attribute strings conditionally.

Note

This package is for PHP. If you are looking for JavaScript/React.js, check out the original [lukeed/clsx](https://github.com/lukeed/clsx).

This package was inspired from [lukeed/clsx](https://github.com/lukeed/clsx) to bring similar functionality to PHP with an extra feature to merge all attributes in one function call.

Installation
------------

[](#installation)

```
composer require dobaniashish/clsx

```

Usage
-----

[](#usage)

This package provides three functions

- `Clsx::attrs` - Generates full attributes string.
- `Clsx::value` - Generates attribute values string.
- `Clsx::merge` - Merges two attributes array.

### Function `Clsx::attrs()`

[](#function-clsxattrs)

Returns generated full attributes string.

#### Parameters

[](#parameters)

- `$attrs_array` (`array`) Attributes array.

#### Usage

[](#usage-1)

```
use Dobaniashish\Clsx\Clsx;

// String values.
Clsx::attrs(['foo' => 'bar', 'baz' => 'qux']);
//=> 'foo="bar" baz="qux"'

// Arrays values.
Clsx::attrs(['foo' => 'bar', 'baz' => ['qux', 'quux']]);
//=> 'foo="bar" baz="qux quux"'

// Arrays values with conditions.
Clsx::attrs([
	'foo' => 'bar',
	'baz' => [
		'qux' => true,
		'quux' => false,
	]
]);
//=> 'foo="bar" baz="qux"'

// Attribute names only.
Clsx::attrs(['foo', 'bar']);
//=> 'foo bar'

// Attribute names only with conditions.
Clsx::attrs(['foo' => true, 'bar' => false]);
//=> 'foo=""'

// Arrays values with all falsy conditions.
Clsx::attrs([
	'foo' => 'bar',
	'baz' => [
		'qux' => false,
		'quux' => false,
	]
]);
//=> 'foo="bar"'

// Arrays values with all falsy conditions but keep attribute name.
Clsx::attrs([
	'foo' => 'bar',
	'baz' => Clsx::value([
		'qux' => false,
		'quux' => false,
	]) ?: true
]);
//=> 'foo="bar" baz'
```

#### Example

[](#example)

```

>Click!
```

### Function `Clsx::value()`

[](#function-clsxvalue)

Returns generated attribute value string.

#### Parameters

[](#parameters-1)

- `$value_array` (`array`) Attribute value array.

#### Usage

[](#usage-2)

```
use Dobaniashish\Clsx\Clsx;

// String values.
Clsx::value(['foo', 'bar']);
//=> 'foo bar'

// Arrays value with conditions.
Clsx::value(['foo' => true, 'bar' => true, 'baz' => false]);
//=> 'foo bar'
```

#### Example

[](#example-1)

```

>Click!
```

### Full Usage Example

[](#full-usage-example)

```
