3

HTMLpurifier を Zend Framework と組み合わせて使用​​したいと考えています。クラスとそのファイルを Zend_Loader でロードしたいと考えています。どのように含めますか?HTMLPurifier.auto.php を使用しますか、それとももっと良い方法を知っていますか?

4

4 に答える 4

5

Zend Framework プロジェクトで HTML Purifier をフィルターとして使用しています。これが私のクラスの変更されたバージョンです:

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);
    }
}
于 2010-07-06T18:59:24.043 に答える
0

質問(または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
{
}

わかる?

于 2009-03-15T03:46:36.527 に答える
0

Zend_Loader クラスを使用してオートローダー クラスを登録できます。パラメータを指定せずに registerAutoLoad() メソッドを呼び出すと、実際には Zend_Loader 自体がオートローダーとして登録されます。それで:

Zend_Loader::registerAutoLoad();

// 以下に等しい: Zend_Loader::registerAutoLoad('Zend_Loader'),true);

Zend_Loader は、次のような Zend Framework の命名規則を使用してクラスをロードしようとします。

  • 各クラスは個別のファイルで定義されます
  • 各クラス名は大文字で始まります
  • クラス名の下線は、ディレクトリ レベルを意味します。

したがって、'Zend_Loader' がクラスの名前である場合、パスの 'Zend' ディレクトリにある 'Loader.php' ファイルで定義されています。PHP は、ファイル Zend/Loader.php からこのクラスをファイルロードできます。

クラスがこの命名規則に従っている場合、同じオートローダーを使用して自動的にロードできます。それ以外の場合は、独自のオートローダーを定義する必要があります。オートローダー クラスを書く winch は Zend_Loader を拡張し、他の命名規則でクラスをロードするようにロード機能を定義できます。次に、独自のオートローダーを Zend_Loader に登録します。このような:

Zend_Loader::registerAutoLoad('myLoader',true);
于 2009-03-16T05:14:59.147 に答える
0

HTMLPurifier のアーカイブのライブラリの内容をライブラリ パスに入れました。だから私はこのディレクトリ構造を持っています:

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

そして、これを HTMLPurifier を使用しているファイルの上に置きます。

require_once 'HTMLPurifier.safe-includes.php';

醜いですが、それは働いています。

于 2010-10-18T13:12:38.600 に答える