2016-04-07 16 views
1

purify kamu yöntemiyle CHtmlPurifier sınıfım var.Sınıf inline php sınıf yöntemini çağırın

Şimdi
<?php $obj = new CHtmlPurifier(); ?> 
<?php echo $obj->purify($text); ?> 

, nasıl purify yöntem satır içi kullanabilirsiniz ?!:
Bu genel kullanımıdır

Doğal ben böyle olmasını kullanamazsınız:

<?php echo CHtmlPurifier::purify($text); ?> 

purify Çünkü statik yöntemdir değil.

Ben bu deneyin bir başka yolu:

<?php echo (new CHtmlPurifier())->purify($text); ?> 

Ancak bu işe yaramaz. (PHP 5.3'te deniyorum)

Ekstra değişken tanımlamaksızın hızlıca satır içi kullanım önerileriniz var mı?

+0

kullandığınız php hangi sürümünü? son örnek php5.4'ten beri çalışmalıdır. – rray

+0

Sınıfın bir örneğini görünüme (veya html'yi çıkardığınız her yere) aktarabilirsiniz. – Andrew

+0

@rray PHP'de denedim 5.3 –

cevap

0

Yii kullanıyorsanız, bunun için bir hizmet oluşturabilir ve orada bir CHtmlPurifier örneğini kaydedebilirsiniz. Bkz http://www.yiiframework.com/doc-2.0/yii-di-servicelocator.html[Yii DI]

Değilse

böyle yeni bir sınıf oluşturabilirsiniz:

Class Registery 
{ 
    public static $refs = []; 

    public static function get($name) 
    { 
     if (!isset(self::$refs[$name])) { 
      if (class_exists($name)) { 
       self::$refs[$name] = new $name(); 
      } else { 
       throw new \Exception('class not exists'); 
      } 
     } 

     return self::$refs[$name]; 
    } 

} 

ve bunu kullanabilirsiniz: Eğer

<?php echo Registery::get('CHtmlPurifier')->purify($text); ?> 
+0

Teşekkürler, ama çözümün karmaşık olduğunu düşünüyorum. ve böylece siz yii2'ye php 5.4+ ile çalışın fakat php 5.3'ten bahsediyorum [har hal mamnon az masokhet! ;-)] –