ecailles/dom-class-name

DOM 类名生成库(BEM 语法类名构建器等)

v1.0.0 2016-01-30 03:15 UTC

This package is auto-updated.

Last update: 2024-08-29 04:17:51 UTC


README

Latest Stable Version Latest Unstable Version License Build Status Coverage Status

通过 Composer 安装

composer require ecailles/dom-class-name

基本用法

use Ecailles\DomClassName\Bem\Bem;

// 'block--block-modifier'
$classname = (new Bem())
    ->block('block')->modifier('block-modifier')
    ->value();

元素

use Ecailles\DomClassName\Bem\Bem;

// 'block--block-modifier__element--element-modifier'
$classname = (new Bem())
    ->block('block')->modifier('block-modifier')
    ->element('element')->modifier('element-modifier')
    ->value();

use Ecailles\DomClassName\Bem\Bem;

// 'block--block-modifier__element--element-modifier class1 class2'
$classname = (new Bem())
    ->block('block')->modifier('block-modifier')
    ->element('element')->modifier('element-modifier')
    ->class(['class1', 'class2'])
    ->value();

返回值

类名作为数组

use Ecailles\DomClassName\Bem\Bem;

// ['block--block-modifier__element--element-modifier', 'class1', 'class2']
$classnames = (new Bem())
    ->block('block')->modifier('block-modifier')
    ->element('element')->modifier('element-modifier')
    ->class(['class1', 'class2'])
    ->get();

类名作为字符串

use Ecailles\DomClassName\Bem\Bem;

// 'block--block-modifier__element--element-modifier class1 class2'
$classname = (new Bem())
    ->block('block')->modifier('block-modifier')
    ->element('element')->modifier('element-modifier')
    ->class(['class1', 'class2'])
    ->value();

类名作为字符串(隐式类型转换)

use Ecailles\DomClassName\Bem\Bem;

$bem = (new Bem())->block('block')->class('class');

// 'block class'
echo htmlspecialchars($bem, ENT_QUOTES, 'UTF-8');

显式修饰符

use Ecailles\DomClassName\Bem\Bem;

// 'block--block-modifier__element--element-modifier'
$classname = (new Bem())
    ->blockModifier('block-modifier')
    ->elementModifier('element-modifier')
    ->block('block')->element('element')
    ->value();

克隆(PHP 5.6 或更早版本也受支持)

use Ecailles\DomClassName\Bem\Bem;

$block = (new Bem())->block('block');

// 'block__element1'
$element1 = $block->clone()->element('element1')->value();

// 'block__element2'
$element2 = $block->clone()->element('element2')->value();

前缀

use Ecailles\DomClassName\Bem\Bem;

// 'prefix-block'
$classname = (new Bem())->prefix('prefix')->block('block')->value();

use Ecailles\DomClassName\Bem\Bem;

// 'prefix-block'
$classname = (new Bem('prefix'))->block('block')->value();

自定义分隔符

前缀分隔符

use Ecailles\DomClassName\Bem\Bem;

// 'prefix__block'
$classname = (new Bem())->prefix('prefix')->prefixSeparator('__')
    ->block('block')->value();

use Ecailles\DomClassName\Bem\Bem;

// 'prefix__block'
$classname = (new Bem('prefix', '__'))->block('block')->value();

元素分隔符

use Ecailles\DomClassName\Bem\Bem;

// 'block-element'
$classname = (new Bem())->elementSeparator('-')
    ->block('block')->element('element')->value();

use Ecailles\DomClassName\Bem\Bem;

// 'block-element'
$classname = (new Bem(null, null, '-'))
    ->block('block')->element('element')->value();

修饰符分隔符

use Ecailles\DomClassName\Bem\Bem;

// 'block-modifier'
$classname = (new Bem())->modifierSeparator('-')
    ->block('block')->element('modifier')->value();

use Ecailles\DomClassName\Bem\Bem;

// 'block-modifier'
$classname = (new Bem(null, null, null, '-'))
    ->block('block')->modifier('modifier')->value();