2014-03-03 22 views
0

我想声明一系列函数并使用数组的元素对它们进行命名。我不想将这些函数作为匿名函数放入数组中,而是希望它们可以通过从数组元素中直接调用它们的唯一名称进行声明和访问。有没有一种方法可以将数组中的字符串用作函数的名称?

我想是这样的,但之后实际工作:

for ($i=0;$i<count($tables);$i++) { 

function $tables[$i][form]() { 
} 
// do something; 
} 

这些功能的目的是为了在子菜单页添加到我的WordPress插件的管理页面。子菜单的数量及其名称取决于数据库中的表中的记录。

也许还有更好的方法来完成这个工作。请帮忙。当我尝试在数组中使用匿名函数并引用add_submenu函数中的函数参数中的数组元素时,我在进入子菜单页时不断遇到权限问题。

+0

我想要问的问题在更明确的方式。我不确定是否应该改变原来的问题,以便更清楚地说明问题或询问另一问题。如果我改变了原来的问题,说我不想使用匿名函数,那么提示我使用匿名函数的回复会显得很愚蠢,而我并不想这么做,因为我真的很感谢任何帮助。 – Mark

+0

''做些什么''从哪里来?数据库? – AbraCadaver

+0

我只是把它放在那里,而不是函数所做的所有事情。也就是说,它创建一个带有5页的标签式菜单,以在数据库中的表中创建新的,列表,查看,编辑和删除记录。我试图为用户提供创建自己的表的能力,然后为这些代码提供一个接口来创建,查看,列出,编辑和删除表中的记录。 – Mark

回答

0

eval函数是我一直在寻找的解决方案:

for ($i=0;$i<count($tables);$i++) { 
    $a[] = $tables[$i][form]; 
    }  

// Loop through the names of the submenu pages creating the required functions 

foreach ($a as $functionname) 

eval('function '.$functionname.'() { 
// All the function code goes here 
}'); 

我发现,试图引用变量尤其是当不逃避和退出PHP的正确是造成我的大部分问题。

感谢Barmar指着我PHP: define functions with variable names

0

函数的名称必须是常量。但是你仍然可以调用一个名字存储在数组中的函数。

如何用动态名称调用函数。

http://www.php.net/call_user_func_array

你也可以使用匿名函数,但是这是比较难一点。

http://www.php.net/manual/en/functions.anonymous.php

+0

我认为我的问题是我在做wordpress add_submenu框架中的建议时遇到了麻烦。 '<?php add_submenu_page($ parent_slug,$ page_title,$ menu_title,$ capability,$ menu_slug,$ function); ?>是函数被调用的地方。 – Mark

+0

我没有WordPress的开发,但你可能想检查什么类型的$函数参数的API。如果它是可调用的,则可以使用匿名函数或包含函数名称的字符串。 – ToBe

+0

它被描述为一个回调。我已经尝试了这两种想法并遇到麻烦。当我使用匿名函数时,我得到'你没有足够的权限来访问这个页面。'当我使用字符串时,我被告知函数不存在或者名称无效。 – Mark

相关问题