PHP类扩展字符串变量

时间:2017-04-25 13:34:05

标签: php class

是否可以声明一个类并让它扩展变量?

class Child extends $parentClass {}

3 个答案:

答案 0 :(得分:1)

是的,它与eval有关。但不建议这样做。

<?php
function dynamic_class_name() {
    if(time() % 60)
        return "Class_A";
    if(time() % 60 == 0)
        return "Class_B";
}
eval(
    "class MyRealClass extends " . dynamic_class_name() . " {" . 
    # some code string here, possibly read from a file
    . "}"
);
?>

Eval是邪恶的吗?! Read this

答案 1 :(得分:0)

不,你不能。

这是因为在正常的定义中:

class A extends SomeOtherClass {
}

SomeOtherClass是名称空间引用,而不是类的实例。并且您不能使用变量来提供该命名空间,因为PHP中的变量是在运行时定义的,而类是在编译阶段定义的。

但是......如果你使用PHP7,你可以这样做:

$newClass = new class extends SomeOtherClass {};

这不是你想要的,但在某种程度上。

答案 2 :(得分:0)

一个Class不能从变量扩展,你需要将变量包装在一个类中进行扩展。希望这有帮助