我正在尝试查看是否有一种从数组值创建函数的方法。
我有一组数据库表名:
Array
(
[0] => table1
[1] => table2
[2] => table3
[3] => table4
[4] => table5
)
等...我希望能够为每个表名生成一个函数:
public function table1()
{
// function code here...
}
public function table2()
{
// function code here...
}
现在每个函数中的代码都是一样的。每次将新表添加到数据库时,只是尝试创建函数。
谢谢!
完成后,每个函数都会显示如下:
public function tablename()
{
$obj = new obj();
$obj->set_table('tablename');
$this->_output_view($obj->render());
}
答案 0 :(得分:1)
如果这是在一个类中,那么你可以在PHP中使用__call()
“魔术方法”。基本上,在一个类中,只要你执行$obj->func()
,就会调用它,无论函数是否存在。
因此,您可以在不创建函数的情况下执行所需的操作。
这是一个简单的例子:
class Tables{
private $tables;
function __construct(){
// Your array of tables
$this->tables = array(
'table1',
'table2',
'table3'
);
}
// This is automatically called when doing $yourObj->table1(), for example
function __call($name, $params=array()){
// Check if the method called is a table name
if(in_array($name, $this->tables)){
// If so, then do whatever with the table name
$obj = new obj();
$obj->set_table($name);
$this->_output_view($obj->render());
}
// Let's make sure to pass on the call to other methods in this class
elseif(method_exists($this, $name)){
return call_user_func_array(array($this, $name), $params);
}
}
}