BootstrapUI\View\Helper\OptionsAwareTrait::injectClasses PHP Метод

injectClasses() публичный Метод

Injects classes into $options['class'] when they don't already exist. If a class is defined in $options['skip'] then it will not be injected. This method removes $options['skip'] before returning.
public injectClasses ( array | string $classes, array $options ) : array
$classes array | string Name of class(es) to inject.
$options array An array of HTML attributes and options.
Результат array An array of HTML attributes and options.
    public function injectClasses($classes, array $options)
    {
        $options += ['class' => [], 'skip' => []];
        $options['class'] = $this->_toClassArray($options['class']);
        $options['skip'] = $this->_toClassArray($options['skip']);
        $classes = $this->_toClassArray($classes);
        foreach ($classes as $class) {
            if (!in_array($class, $options['class']) && !in_array($class, $options['skip'])) {
                array_push($options['class'], $class);
            }
        }
        unset($options['skip']);
        $options['class'] = trim(implode(' ', $options['class']));
        return $options;
    }

Usage Example

 public function testSkippingInjectClasses()
 {
     $this->assertEquals(['class' => 'x y z a c'], $this->object->injectClasses('a b c', ['class' => 'x y z', 'skip' => 'b']));
     $this->assertEquals(['class' => 'x y z a b c'], $this->object->injectClasses('a b c', ['class' => 'x y z', 'skip' => 'm']));
 }