Я хочу использовать HTMLpurifier в сочетании с Zend Framework. Я бы хотел загрузить класс и его файлы с помощью Zend_Loader. Как бы вы его включили? Вы бы просто использовали HTMLPurifier.auto.php или знаете, как лучше это сделать?
Я использую 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); } }
Если я не понимаю вопрос (или HTMLpurifier). Если у вас запущен Zend_Loader и он настроен на автозагрузку.
require_once('Zend/Loader.php'); Zend_Loader::registerAutoload();
Или что-то в этом роде. Поместите класс HTMLpurifier в каталог вашей библиотеки. Я просто не уверен, что это фактическое имя класса.
Вы можете просто поместить файл класса в библиотечный каталог и вызвать его по имени, или, может быть, бросить его в отдельный пакет.
// SITE/library/Zend/Auth.php class Zend_Auth { } // SITE/library/htmlpurifier.php class htmlpurifier { } // SITE/library/misc/htmlpurifier.php class Misc_HTMLpurifier { }
Имеют смысл?
вы можете зарегистрировать класс автозагрузчика, используя класс 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
если ваши классы следуют этому соглашению об именах, они могут автоматически загружаться с использованием одного и того же автозагрузчика. иначе вам нужно определить свой автозагрузчик. написать лебедку класса автозагрузчика можно расширить Zend_Loader и определить функциональность загрузки, чтобы она загружала классы с другими соглашениями об именах. затем зарегистрируйте свой автозагрузчик с помощью Zend_Loader. как это:
Zend_Loader::registerAutoLoad('myLoader',true);
Я поместил содержимое библиотеки архива HTMLPurifier в свой путь к библиотеке. Поэтому у меня есть эта структура каталогов:
library/ HTMLPurifier\ HTMLPurifier.auto.php ... HTMLPurifier.safe-includes.php
И затем я помещаю это поверх файла, где я использую HTMLPurifier:
require_once 'HTMLPurifier.safe-includes.php';
Уродливый, но он работает.