php4系ではコンストラクタで$thisが上書きできた
<?php class B{ function B(){ ; } } class A { function A(){ $this = new B(); } } $a = new A(); var_dump($a); ?>
なんかFatctoryメソッドっぽいのでFactory関数の代わりにコンストラクタを使おうとしたら失敗した
もともとはコンストラクタ失敗を返すため
コンストラクタで$thisの上書きは便利だと思うのだがPHP5.xでは規制されてしまった。これはPHP5でExceptionがサポートされたからみたい。もともと$thisの上書きはコンストラクタが戻り値を返せないからだということ。そういえばJavaもそうだな。
<?php class B{ function B(){ return; } } class A { function A(){ $this = PEAR::raiseError("failed"); } } $a = new A(); var_dump($a); ?>
PEAR::Errorってバッドノウハウで、PHP5では使わないと思うんだが。PEAR::ERRORを使ったコードと共存していくにはどういう方法がベターなんだろう。