__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");
?>
HOWEVER :eval
この場合、 を使用すると便利ですが、ユーザーが送信したものを何らかの方法で送信して の内容を変更できる場合、かなり大きなセキュリティ ホールが明らかになります$class
。これらの制限とセキュリティへの影響を理解していれば、これを使用できるはずです。