PHPで動的OOPもどき
2008年3月26日
PHP5では、クラスで__call()メソッドが使えるので、JavaScriptみたいな動的オブジェクトが作れそう。
実行結果
どんなときに便利か、今は思いつかないけれど。
<?php $obj=(object)$obj; $obj->testfunc=create_function('$i','return $i+1;'); //echo $obj->testfunc(2);// Fatal Error $f=&$obj->testfunc; echo $f(2);// 3 $obj=new dynamic_obj; $obj->testfunc=create_function('$i','return $i+1;'); $obj->testfunc2=create_function('$i','return $i+2;'); echo $obj->testfunc(2);// 3 echo $obj->testfunc2(2);// 4 $obj->__destruct=create_function('','echo "__destruct!";');//__destruct! class dynamic_obj{ public function __call($methodname,$args){ return call_user_func_array($this->$methodname,$args); } public function __destruct(){ if (isset($this->__destruct)) call_user_func($this->__destruct); } }
実行結果
334__destruct!
どんなときに便利か、今は思いつかないけれど。