使用变量作为类名

时间:2013-11-20 14:00:15

标签: php class yii

我有以下内容:

User::model()->exists($someParamsHere);

有没有办法让班级名称'用户'动态化?所以像这样:

$className::model()->exists($someParamsHere);

但这似乎不起作用。

我也读过一些关于ReflectionClass的内容,但我不确定如何使用它。

我尝试了这个,但是当然不会以这种方式调用model()方法:

$reflectionMethod  = new ReflectionMethod($className, 'exists');
$reflectionMethod->invoke(null, $someParamsHere);

2 个答案:

答案 0 :(得分:2)

$className::model()适用于PHP 5.3及以上版本,如果我没有记错的话。解决方法是使用CActiveRecord::model($className)。请参阅CActiveRecord.model()的文档。

答案 1 :(得分:1)

在PHP中> = 5.3正常工作:

<?php
class Foo {

    static function Bar() {
        return "Bar";
    }

    static function getFoo() {
        return new static();
    }

    function getBar() {
        return static::Bar();
    }
}

$class = "Foo";

print $class::Bar() . "\n";

print $class::getFoo()->Bar() . "\n";

结果:

Bar
Bar
相关问题