Birden HTMLPurifier yapılandırmaları işlemek için etkili yolu

2 Cevap php

Ben bir akım projesinde HTMLPurifier kullanıyorum ve çoklu yapılandırmaları işleme hakkında gitmek için en etkili yol hakkında emin değilim. Çoğunlukla tek önemli şey değişiyor izin etiketler.

Şu anda bir yapılandırma gerektiğinde çağrılır HTMLPurifier kullanarak her sınıfta, özel bir yöntemi var ve varsayılan bir tane oluşturur. 2 sınıfları, aynı yapılandırma kullanarak bu kodu çoğaltma, ve bir sınıf 2 yapılandırmaları ihtiyacı varsa ne gibi ben bu konuda gerçekten mutlu değilim? Bu sadece dağınık hissediyor.

Bunun için bir baş, o ihtiyaç duyulan kadar şey yaratma değil o anlamda tembel olduğunu. Çeşitli sınıflar kullanılır ve bir şey arındırmak zorunda asla olabilir. Yani ben bile kullanılan olmayabilir yapılandırma nesneleri bir grup oluşturmak için istemiyorum.

Ben sadece son zamanlarda HTMLPurifier yeni bir örneğini oluşturmak öğrendim ve doğrudan öylesine gibi yapılandırma seçenekleri ayarlayın:

$purifier = new HTMLPurifier();
$purifier->config->set('HTML.Allowed', '');

Ben hep ya hiç kötü formu ise emin değilim, ve eğer değilse ben kullanmak koymak için iyi bir yol gerçekten emin değilim.

Benim en son fikir sadece sonraki arındırmak aramalarda kullanılmak üzere bir HTMLPurifier ayarlarımızı dönmek bir yapılandırma işleyicisi sınıf oluşturmak oldu. Bir noktada muhtemelen biçimlendirimleri ayarını sağlamak için genişletilmiş olabilir, ama sadece baştan ben sadece kodlanmış olması ve istenen yapılandırma kapmak için bir anahtar aracılığıyla bir yöntemdir parametresini çalıştırmak düşündüm. Belki de sadece bir argüman olarak saklanan temizleyici örneğini göndermek ve yöntemi doğrudan yukarıda gösterilen Seviyorum üzerinde set config olabilir?

Bu benim için böyle bir görev bana işlemek için bir sınıf oluşturarak garanti eğer ben emin değilim ama, ben düşündüm birkaç yollarından iyi görünüyor, ve eğer öyleyse, ben en iyi şekilde idare ediyorum eğer.

Ben bu yüzden birden çok yapılandırmaları işleme için yerinde daha iyi mekanizmalar varsa emin değilim HTMLPurifier iç işleyişini çok aşina değilim.

Herhangi bir fikir herkes için teşekkürler sunabilir.

2 Cevap

Ben sadece hızlı, basit yapılandırma işleyicisi sınıf yazdı.

Sen görebilirsiniz / kullanmak @ http://gist.github.com/358187/

Bu başlatma sırasında biçimlendirimleri bir dizi alır.

$configs = array(
  'HTML.Doctype' => 'HTML 4.01 Strict',

  'posts' => array(
    'HTML.Allowed' => 'p,a[href],img[src]'
  ),
  'comments' => array(
    'HTML.Allowed' => 'p'
  ),

  'default' => array(
    'HTML.Allowed' => ''
  )
);

Diziye doğrudan koymak direktifler küresel ve tüm yapılandırmaları uygulanacaktır. Aynı direktif adlandırılmış yapılandırma içine ayarlanırsa, adını config değeri kullanılır.

Sonra şöyle bir yapılandırma kapmak:

$purifierConfig = new purifierConfig($configs);
$commentsConfig = $purifierConfig->getConfig('comments');

veya, steno:

$commentsConfig = $purifierConfig['comments'];

Istenen yapılandırma yok veya hiçbir yapılandırma çağrısında belirtilirse, varsayılan yapılandırma iade edilecektir.

Ben muhtemelen bir noktada eti dışarı edeceğiz, ama şimdi bu işleri.

Ben insanların ya da kendi projeleri böyle şeyler ele orada bu daha Steamlined böyle bir şey yapılmış mekanizmalar inşa herhangi vardı, ama sanırım eğer benim soru kapsamı biraz dar nasıl arıyordu.

Yapılandırma nesneleri önemli bir değişmeyen vardır: bir saflaştırma gerçekleştirmek için kullanılan oldum sonra, onlar düzenlenemez. Sen sınıf, özellikle inherit, vardır, ve loadArray kullanarak değerleri bir dizi yükleyebilirsiniz ki convenience methods, bazı ilginizi çekebilir.