cakePHP: Санация перегрузки

В недавней версии cakePHP 1.3.4 я обнаружил, что Sanitize::html возвращает html-объекты с двойным кодированием — из-за недавно добавленного четвертого параметра htmlentities 'double_encode'.

Вот соответствующий билет на cakePHP: http://cakephp.lighthouseapp.com/projects/42648/tickets/1152-sanitizehtml-needs-double_encode-parameter-in-htmlentities

Поскольку мне нужно использовать cakePHP 1.3.4 на PHP 5.2.14, мне нужно изменить параметр double_encode. Есть ли способ перегрузить метод Sanitize::html в cake, чтобы мне не приходилось возиться с ядром?


person lorem monkey    schedule 29.09.2010    source источник


Ответы (1)


Вы можете подклассировать его в каталоге /app/libs:

App::import('Sanitize');

class MySanitize extends Sanitize {

    public static function html(...) {
        ...
    }

}

Вам придется переключиться на использование MySanitize вместо Sanitize, но это не должно быть большой проблемой. Текстовый поиск/замена может позаботиться об этом, если вы уже часто его используете.

person deceze♦    schedule 29.09.2010
comment
Большое спасибо - это подкласс :) - person lorem monkey; 29.09.2010
comment
Кстати, это хороший пример того, почему вызовы статических методов являются плохой практикой. С правильной инъекцией зависимостей вам не нужно было бы заменять все экземпляры... Cake действительно беспорядок. - person deceze♦; 07.08.2012