Включить HTMLpurifier с Zend_Loader - PullRequest
3 голосов
/ 15 марта 2009

Я хочу использовать HTMLpurifier в сочетании с Zend Framework. Я хотел бы загрузить класс и его файлы с Zend_Loader. Как бы вы это включили? Вы бы просто использовали HTMLPurifier.auto.php или знаете лучший способ сделать это?

Ответы [ 4 ]

5 голосов
/ 06 июля 2010

Я использую HTML Purifier в качестве фильтра в моем проекте Zend Framework. Вот измененная версия моего класса:

require_once 'HTMLPurifier.includes.php';
require_once 'HTMLPurifier.autoload.php';

class My_Filter_HtmlPurifier implements Zend_Filter_Interface
{
    protected $_htmlPurifier = null;

    public function __construct($options = null)
    {
        // set up configuration
        $config = HTMLPurifier_Config::createDefault();
        $config->set('HTML.DefinitionID', 'My Filter');
        $config->set('HTML.DefinitionRev', 1); // increment when configuration changes
        // $config->set('Cache.DefinitionImpl', null); // comment out after finalizing the config

        // Doctype
        $config->set('HTML.Doctype', 'XHTML 1.0 Transitional');

        // configure caching
        $cachePath = APPLICATION_PATH . '/../cache/htmlpurifier';
        if (!is_dir($cachePath)) {
            mkdir($cachePath, 0755, true);
        }
        $cachePath = realpath($cachePath);
        $config->set('Cache.SerializerPath', $cachePath);

        if (!is_null($options)) {
            //$config = HTMLPurifier_Config::createDefault();
            foreach ($options as $option) {
                $config->set($option[0], $option[1], $option[2]);
            }
        }

        $this->_htmlPurifier = new HTMLPurifier($config);
    }

    public function filter($value)
    {
        return $this->_htmlPurifier->purify($value);
    }
}
0 голосов
/ 18 октября 2010

Я поместил содержимое библиотеки архива HTMLPurifier в путь к моей библиотеке. Итак, у меня есть эта структура каталогов:

library/
  HTMLPurifier\
  HTMLPurifier.auto.php
  ...
  HTMLPurifier.safe-includes.php

И затем я помещаю это поверх файла, где я использую HTMLPurifier:

require_once 'HTMLPurifier.safe-includes.php';

Ужасно, но работает.

0 голосов
/ 16 марта 2009

вы можете зарегистрировать класс автозагрузчика, используя класс Zend_Loader. когда вы вызываете метод registerAutoLoad () без каких-либо параметров, вы фактически регистрируете сам Zend_Loader в качестве автозагрузчика. так:

Zend_Loader::registerAutoLoad();

// равно: Zend_Loader :: registerAutoLoad ('Zend_Loader'), true);

Zend_Loader пытается загрузить классы, используя соглашение об именах Zend Framework, которое выглядит следующим образом:

  • каждый класс определяется в отдельном файле
  • имя каждого класса начинается с заглавной буквы
  • подчеркивает в имени класса, означает уровень каталога.

поэтому, если 'Zend_Loader' является именем класса, он определяется в файле 'Loader.php' в каталоге 'Zend' вашего пути. PHP может загрузить этот класс из файла Zend / Loader.php

если ваши классы следуют этому соглашению об именах, они могут автоматически загружаться с использованием того же автозагрузчика. иначе вам нужно определить свой собственный автозагрузчик. написать класс автозагрузчика winch может расширить Zend_Loader и определить функциональность загрузки так, чтобы он загружал классы с другими соглашениями об именах. затем зарегистрируйте свой собственный автозагрузчик в Zend_Loader. как это:

Zend_Loader::registerAutoLoad('myLoader',true);
0 голосов
/ 15 марта 2009

Если я не правильно понял вопрос (или HTMLpurifier). Если у вас запущен Zend_Loader и он настроен на автозагрузку.

require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();

Или что-то на этот счет. Поместите класс HTMLpurifier в каталог вашей библиотеки. Я просто не уверен, что это фактическое имя класса.

Вы можете просто поместить файл класса в каталог библиотеки и назвать его по имени, или, может быть, выбросить в пакет misc.

Примеры

// SITE/library/Zend/Auth.php
class Zend_Auth
{
}

// SITE/library/htmlpurifier.php
class htmlpurifier
{
}

// SITE/library/misc/htmlpurifier.php
class Misc_HTMLpurifier
{
}

Имеет смысл?

...