<?php
class Brand
{
public function insert($data){
}
public static function update($data, $where = ""){
}
public function delete($id){
}
//重写机器人:Brand::robot(array('method'=>'save','params'=>array('data'=>'someData')) );
public static function robot(array $settings)
{
$data = array();
$obj = new self();
extract($settings['params']);
switch ($settings['method']) {
case 'save':
$data = $obj->insert($data);
break;
case 'update':
$data = $obj->update($data, $where);
break;
default:
break;
}
return $data;
}
以上代码用系统自带方法也可以实现
//use for static method
call_user_func_array(array("Brand", "update"), array($data, $where));
call_user_func(array("Brand", "update"), $data, $where);
// or
$obj = new Brand;
call_user_func(array($obj, "update"), $data, $where)
compact是extract的反向的