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!
どんなときに便利か、今は思いつかないけれど。