xterr/classnames-php

一个简单的PHP工具,用于条件性地合并classNames

v1.0.1 2017-08-28 15:45 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:20:17 UTC


README

一个简单的PHP工具,用于条件性地合并classNames

Build Status

JavaScript classNames工具的PHP端口。 https://github.com/JedWatson/classnames

CJStroud/classnames-php 启发

安装

composer require xterr/classnames-php

可以通过在 xterr\ClassNames\classNames 中定义的函数访问 classNames

use function xterr\ClassNames\classNames;

classNames('foo', ['bar' => TRUE]); // 'foo bar'

或者通过实例化类 \xterr\ClassNames\ClassNames 并将其作为函数使用

use \xterr\ClassNames\ClassNames;

$oClassNames = new \xterr\ClassNames\ClassNames;
$oClassNames('foo', ['bar' => TRUE]); // 'foo bar'

用法

classNames 函数可以接受任意数量的参数,这些参数可以是字符串或数组。当使用数组时,如果与给定键关联的值是假值,则该键不会包含在输出中。如果没有提供值,则假定值为真。

use function xterr\ClassNames\classNames;

classNames('foo'); // 'foo'
classNames(['foo' => TRUE]); // 'foo'
classNames('foo', ['bar' => FALSE, 'baz' => TRUE]); // 'foo baz'
classNames(['foo', 'bar' => TRUE]) // 'foo bar'

// Falsy values get ignored
classNames('foo', NULL, 0, FALSE, 1); // 'foo 1'

数组将根据上述规则递归地展开

use function xterr\ClassNames\classNames;

$arr = ['b', ['c' => TRUE, 'd' => FALSE]];
classNames('a', arr); // => 'a b c'

如果存在 __toString() 方法,则将处理对象

use function xterr\ClassNames\classNames;

class ExampleObject 
{
    function __toString()
    {
        return 'bar';
    }
}

classNames(new ExampleObject()); // => 'bar'

函数和可调用对象将被处理,并且应该返回与 classNames 函数接受的参数相同的类型(字符串、数组等)。函数和可调用对象将接收整个结果集作为参数。

use function xterr\ClassNames\classNames;

class ExampleObject
{
    public static function getClasses($aResultSet)
    {
        return ['bar'];
    }
    
    public function getClassesDynamic($aResultSet)
    {
        return ['baz'];
    }
}

$oObj = new ExampleObject();

classNames(function($aResultSet) { 
    return 'foo'
}, ['ExampleObject', 'getClasses'], [$oObj, 'getClassesDynamic']); // 'foo bar baz'

##去重

去重类并确保在后续参数中指定的假类不会被包含在结果集中。

use function xterr\ClassNames\classNames;

classNames('foo', 'foo', 'bar'); // => 'foo bar'
classNames('foo', ['foo' => FALSE, 'bar' => TRUE ]); // => 'bar'

许可证

MIT. 版权所有 © 2017 Razvan Ceana。