まず第一に:これをしないでください。
とはいえ、本当にクラスを「再定義」する必要がある場合は、ラッパークラスを使用してそれを行うことができます。
<?php
class foo { //Original definition here };
class bar {
var $baseobj;
function bar($some, $args) {
$this->baseobj=new $which($some, $args);
}
function someMethod() {
return $this->baseobj->someMthod();
}
//...
}
class baz {
function someMethod() {
return "This is the result";
}
//...
}
$obj=new bar($this, $that);
//$obj is now a wrapped foo object
echo $obj->someMethod(); //Will call into foo
$obj->baseobj=new baz($this, $that);
//$obj is now a wrapped baz object
echo $obj->someMethod(); //Will call into baz
?>
繰り返しますが、非常に正当な理由なしにこれを行わないでください!
免責事項:この実装は大雑把なものではなく、アイデアを伝えるためだけのものです。