Я использую HTMLPurifier в текущем проекте, и я не уверен в наиболее эффективном способе обработки нескольких конфигов. По большей части единственное существенное изменение - это разрешенные теги.
В настоящее время у меня есть закрытый метод в каждом классе, использующий HTMLPurifier, который вызывается при необходимости конфигурации и создает ее по умолчанию. Я не очень доволен этим, как будто 2 класса используют один и тот же конфиг, это дублирует код, и что если классу нужно 2 конфига? Это просто грязно.
Единственный плюс в том, что он ленив в том смысле, что ничего не создает, пока не понадобится. Различные классы могут быть использованы и никогда не должны ничего очищать. Поэтому я не хочу создавать группу объектов конфигурации, которые могут даже не использоваться.
Я только недавно узнал, что вы можете создать новый экземпляр HTMLPurifier и напрямую установить параметры конфигурации, например, так:
$purifier = new HTMLPurifier();
$purifier->config->set('HTML.Allowed', '');
Я не уверен, что это дурной тон или нет, и если нет, то я не уверен, что это хороший способ использовать его.
Моя последняя идея состояла в том, чтобы создать класс обработчика конфигурации, который просто возвращал бы конфигурацию HTMLPurifier для использования в последующих вызовах очистки. В какой-то момент его, вероятно, можно было бы расширить, чтобы разрешить установку конфигов, но с самого начала я подумал, что они просто будут жестко запрограммированы и запустят параметр метода через переключатель, чтобы получить запрошенную конфигурацию. Возможно, я мог бы просто отправить хранимый экземпляр очистителя в качестве аргумента и сделать так, чтобы метод напрямую устанавливал конфигурацию на него, как показано выше?
Это мне кажется лучшим из немногих способов, о которых я думал, хотя я не уверен, оправдывает ли такое задание создание класса для его обработки, и если да, то если я справлюсь с ним наилучшим образом .
Я не слишком знаком с внутренней работой HTMLPurifier, поэтому я не уверен, существуют ли какие-либо более эффективные механизмы для обработки нескольких конфигов.
Спасибо за любые идеи, которые может предложить каждый.