是否可以动态扩展类?
我有一个类,我需要根据标准使用它来扩展不同的类(最多数百个)。在 PHP 中,有没有办法通过动态类名来扩展类?
我假设它需要一个方法来指定具有实例化的扩展。
想法?
我有一个类,我需要根据标准使用它来扩展不同的类(最多数百个)。在 PHP 中,有没有办法通过动态类名来扩展类?
我假设它需要一个方法来指定具有实例化的扩展。
想法?
虽然它仍然不可能,不完全是你的答案,我需要同样的东西,不想使用eval,猴子补丁等。所以我通过在条件中扩展它来使用默认类。
当然,这意味着如果你有100个类要扩展,你需要用另一个扩展操作添加100个条件,但对我来说,这看起来是正确的方式。
<?php
if(class_exists('SolutionClass')) {
class DynamicParent extends SolutionClass {}
} else {
class DynamicParent extends DefaultSolutionClass {}
}
class ProblemChild extends DynamicParent {}
?>
是的。我喜欢eval的答案,但是很多人害怕他们的代码中的任何eval,所以这里有一个没有eval的:
<?php //MyClass.php
namespace my\namespace;
function get_dynamic_parent() {
return 'any\other\namespace\ExtendedClass';// return what you need
}
class_alias(get_dynamic_parent(), 'my\namespace\DynamicParent');
class MyClass extends DynamicParent {}