Incluir HTMLpurifier com Zend_Loader

Eu quero usar o HTMLpurifier em combinação com o Zend Framework. Eu adoraria carregar a Classe e seus arquivos com o Zend_Loader. Como você poderia incluí-lo? Você apenas usaria o HTMLPurifier.auto.php ou conhecia uma maneira melhor de fazê-lo?

Uso o HTML Purifier como filtro no meu projeto do Zend Framework. Aqui está uma versão alterada da minha class:

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); } } 

A menos que eu esteja mal entendendo a questão (ou HTMLpurifier). Se você tiver o Zend_Loader em execução e estiver configurado para carregar automaticamente.

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

Ou algo nesse sentido. Coloque a class HTMLpurifier no seu diretório da biblioteca. Eu não tenho certeza sobre o nome da class atual.

Você pode simplesmente colocar o arquivo de class no diretório da biblioteca e chamá-lo por seu nome, ou talvez jogá-lo em um pacote misc.

Exemplos

 // SITE/library/Zend/Auth.php class Zend_Auth { } // SITE/library/htmlpurifier.php class htmlpurifier { } // SITE/library/misc/htmlpurifier.php class Misc_HTMLpurifier { } 

Faz sentido?

Você pode registrar uma class de carregador automático usando a class Zend_Loader. quando você chama o método registerAutoLoad () sem qualquer parâmetro, você realmente está registrando o próprio Zend_Loader como um carregador automático. assim:

 Zend_Loader::registerAutoLoad(); 

// é igual a: Zend_Loader :: registerAutoLoad (‘Zend_Loader’), true);

O Zend_Loader tenta carregar classs usando a convenção de nomeação do Zend Framework, que é assim:

  • cada class é definida em um arquivo separado
  • cada nome de class começa com uma letra maiúscula
  • sublinha no nome da class, significa um nível de diretório.

então, se ‘Zend_Loader’ é o nome de uma class, ele está definido no arquivo ‘Loader.php’ no diretório ‘Zend’ no seu caminho. para você o PHP pode arquivar esta class do arquivo Zend / Loader.php

Se as suas classs seguem esta convenção de nomenclatura, elas podem ser carregadas automaticamente usando o mesmo carregador automático. Além disso, você precisa definir seu próprio carregador automático. escrever um guincho da class do carregador automático pode estender o Zend_Loader e definir a funcionalidade de carregamento para que ele carregue classs com outras convenções de nomenclatura. então registre seu próprio carregador automático com o Zend_Loader. como isso:

 Zend_Loader::registerAutoLoad('myLoader',true); 

Coloquei o conteúdo da biblioteca do arquivo do HTMLPurifier no caminho da minha biblioteca. Então eu tenho essa estrutura de diretório:

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

E então coloquei isso em cima do arquivo onde eu estou usando o HTMLPurifier:

 require_once 'HTMLPurifier.safe-includes.php'; 

Feio, mas está funcionando.