Zend_Loader ile HTMLpurifier Dahil

4 Cevap php

Ben Zend Framework ile birlikte HTMLpurifier kullanmak istiyorum. Ben Zend_Loader ile Class ve dosyaları yüklemek isterim. Bunu nasıl yer alacak? Sadece HTMLPurifier.auto.php kullanmak misiniz ya da bunu yapmanın daha iyi bir yolunu biliyor musunuz?

4 Cevap

Benim Zend Framework projesinde bir filtre olarak HTML Arıtma kullanın. İşte benim sınıf bir değiştirilmiş versiyonu:

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

Ben soru (Ya HTMLpurifier) ​​yanlış anlama sürece. Eğer Zend_Loader çalışıyor ve eğer autoload için ayarlanmıştır.

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

Veya bu yönde bir şey. Kütüphane dizinde HTMLpurifier sınıfını koydu. Ben gerçek bir sınıf adı sadece emin değilim.

Sadece kütüphane dizinine sınıf dosya koymak ve onun adıyla onu aramak, ya da belki bir misc pakette atmak olabilir.

Examples

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

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

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

Mantıklı?

Eğer Zend_Loader sınıfını kullanarak bir otomatik yükleyici sınıfı kaydedebilirsiniz. Eğer herhangi bir parametre olmadan registerAutoLoad () yöntemini çağırdığınızda, aslında bir autoloader olarak Zend_Loader kendisi kaydediyorlar. bu yüzden:

Zend_Loader::registerAutoLoad();

/ / Eşittir: Zend_Loader :: registerAutoLoad ('Zend_Loader'), true);

Zend_Loader bu gibi Zend Framework adlandırma kullanarak sınıfları yüklemeye çalışır:

  • her sınıf ayrı bir dosyada tanımlanır
  • Her sınıf adı bir büyük harf ile başlar
  • sınıf adı altını çizen, bir dizin seviyesi anlamına gelir.

'Zend_Loader' bir sınıfın adıdır eğer öyleyse, bu yolda 'zerdüştlerin' dizinindeki dosyası 'Loader.php' olarak tanımlanır. Size PHP dosyası Zend / Loader.php Bu sınıf yükü bulunabilirsiniz

sınıflar bu adlandırma takip ederseniz, onlar otomatik olarak aynı autoloader kullanılarak yüklenebilir. başka, kendi autoloader tanımlamak gerekir. Bir autoloader sınıf vinç yazmak Zend_Loader uzatmak, ve diğer adlandırma kuralları ile sınıfları yük böylece yükleme işlevi tanımlayabilirsiniz. sonra Zend_Loader ile kendi autoloader kaydedin. gibi bu:

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

Benim kütüphane yolunda HTMLPurifier bir arşiv kütüphanesinin içeriğini koyduk. Yani bu bir dizin yapısı vardır:

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

Ve sonra ben HTMLPurifier kullanıyorum dosyasının üstüne koymak:

require_once 'HTMLPurifier.safe-includes.php';

Çirkin, ama çalışıyor.