我有一种方法可以在Php中定义嵌套类,但它非常原始。
class foo {
function define_new_class($class, $code) {
if (!class_exists($class)) {
$definition = eval($code);
}
}
function bar() {
$new_class = "boo";
$this->define_new_class($new_class, "class $new_class {}");
$obj = new $new_class();
echo "Current class: " . get_class($this) . "\n"; // foo
echo "\$obj class: " . get_class($obj) . "\n"; // boo
}
}
$foo = new foo();
$foo->bar();
是否有可能以优雅的方式完成同样的工作?
答案 0 :(得分:0)
由于无法定义真正的嵌套类: 而不是使用嵌套类,您可以创建另一个以OuterClass名称开头的类:
class OuterClass {
...stufs...
}
class OuterClass_InnerClass {
...stufs...
}
或使用名称空间
class OuterClass {
...stufs...
}
class \OuterClass\InnerClass {
...stufs...
}