将函数名称存储在数据库中,然后执行它

时间:2012-12-24 10:33:10

标签: php mysql function content-management-system

我正在制作一种在网页的各个部分工作的CMS系统,并将每个系统作为不同的条目存储到MySQL数据库的表中。当用户首次设置页面时,PHP脚本会调用一个名为addsection($name, $content)的函数,该函数将该部分添加到数据库中。但是,为了使这个系统更灵活,所以它不使用静态部分,我希望能够将函数更改为addsection($name, function),您可以在其中为参数function提供函数。有没有什么办法可以将这个函数或函数名存储在数据库中,然后在代码需要获取段文本时调用它?如果没有,我能做什么呢?我用来获取该部分内容的函数只是section($name) 此外,如果在不使用文件或其他内容之前未查看当前页面,是否有人知道重定向到另一页面的简单方法?

1 个答案:

答案 0 :(得分:1)

您可以使用变量函数(http://php.net/manual/en/functions.variable-functions.php)。

$r = mysql_query("SELECT method FROM method_table WHERE id = 2");
$row = mysql_fetch_assoc($r);
$func = $row['method'];
$func($parameter); //will execute whatever method you stored in the `method` field

通过这种方式,您可以执行一个名称存储在数据库中的函数。如果你想在一个对象的上下文中执行它(因此method),你可以这样做:$ this-> $ func($ parameter);