调用类内联php的公共方法

时间:2016-04-07 14:50:56

标签: php class

我的CHtmlPurifier课程采用purify公共方法 这是一般用法:

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

现在,我如何使用purify方法内联?!

当然我不能这样使用:

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

因为purify不是静态方法。

我尝试这种方式的另一种方式:

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

但这不起作用。 (我在PHP 5.3中尝试)

您是否有任何建议在没有定义额外变量的情况下快速内联使用?

1 个答案:

答案 0 :(得分:0)

如果您正在使用Yii,那么可以为此创建服务并在那里注册CHtmlPurifier的实例。 见http://www.yiiframework.com/doc-2.0/yii-di-servicelocator.html[Yii DI]

如果不是

你可以创建这样的新类:

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 echo Registery::get('CHtmlPurifier')->purify($text); ?>