从数组值创建函数

时间:2014-12-04 18:39:11

标签: php arrays function

我正在尝试查看是否有一种从数组值创建函数的方法。

我有一组数据库表名:

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());
}

1 个答案:

答案 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);
        }
    }
}