xterr / classnames-php
一个简单的PHP工具,用于条件性地合并classNames
v1.0.1
2017-08-28 15:45 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ^6.3
This package is not auto-updated.
Last update: 2024-09-29 04:20:17 UTC
README
一个简单的PHP工具,用于条件性地合并classNames
JavaScript classNames工具的PHP端口。 https://github.com/JedWatson/classnames
安装
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。