Удаление CSS класса в классе Tag
Давайте теперь реализуем удаление CSS класса. Для этого было бы удобно иметь вспомогательный метод, который будет удалять элемент из массива по тексту этого элемента. В PHP, к сожалению, нет такой встроенной функции, поэтому реализуем ее в виде приватного метода:
<?php
private function removeElem($elem, $arr)
{
$key = array_search($elem, $arr); // находим ключ элемента по его тексту
array_splice($arr, $key, 1); // удаляем элемент
return $arr; // возвращаем измененный массив
}
?>
Используя метод removeElem мы теперь
можем реализовать метод removeClass
для удаления CSS классов. Реализуем:
<?php
public function removeClass($className)
{
if (isset($this->attrs['class'])) {
$classNames = explode(' ', $this->attrs['class']);
if (in_array($className, $classNames)) {
$classNames = $this->removeElem($className, $classNames);
$this->attrs['class'] = implode(' ', $classNames);
}
}
return $this;
}
?>
Самостоятельно реализуйте описанный метод
и добавьте его в ваш класс Tag. Проверьте
его работу, например, так:
<?php
echo (new Tag('input'))
->setAttr('class', 'eee zzz kkk') // добавим 3 класса
->removeClass('zzz') // удалим класс 'zzz'
->open(); // выведет <input class="eee kkk">
?>