您应该能够通过扩展您尝试复制的类并覆盖该__construct
函数来模仿反射行为:
<?php
class MyClass extends ExtendingClass {
public function __construct() {
/* Override default constructor */
}
}
?>
这基本上可以通过使用来动态化eval
:
<?php
function newInstanceWithoutConstructor($class) {
$className = $class . "Extended" . rand(0, 99999999);
while (class_exists($className)) {
$className = $class . "Extended" . rand(0, 99999999);
}
eval("class " . $className . " extends " . $class . " { public function __construct() { } }");
return new $className();
}
$newInstance = newInstanceWithoutConstructor("DateTime");
?>
但是:eval
在这种情况下使用可能很有用,但如果用户提交的任何内容都可以以任何方式提交以更改$class
. 如果您了解这些限制和安全隐患,您应该能够使用它。