2016-04-07 23 views
1

CHtmlPurifierクラスはpurify公開メソッドがあります。
これは一般的な使用方法です:クラスのインラインメソッドを呼び出すpublicメソッド

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

、どのように私はpurifyメソッドをインラインで使用することができます! purifyは静的メソッドではありませんので

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

当然のことながら、私はこのようなことに使用することはできません。

私はこれを試してみてくださいもう一つの方法:

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

しかし、これは動作しません。 (PHP 5.3で試してみます)

余分な変数を定義せずにすぐにインラインで使うことをお勧めしますか?

+0

を使用すると、このように新しいクラスを作成することができません

場合 http://www.yiiframework.com/doc-2.0/yii-di-servicelocator.html[Yii DI]

を参照してください?最後の例はphp5.4以降で動作するはずです – rray

+0

クラスのインスタンスをビューに渡すだけで済みます(または、htmlを出力していてもかまいません)。 – Andrew

+0

@rray PHP 5.3で試してみてください –

答えて

0

Yiiを使用している場合、そのサービスを作成してそこにCHtmlPurifierのインスタンスを登録することができます。

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

} 

、あなたがそれを使用することができます:どのPHPのバージョンを使用している

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

ありがとうございます。しかし、あなたのソリューションは複雑だと思います。そしてあなたはphp 5.4+でyii2の作業を指していますが、私はPHP 5.3について話しています[ハーフマムン・アザ・マソケートです! ;-)] –

関連する問題