我正在尝试在函数中设置IF语句,以确定是否正在使用外部函数。我想我的问题可以采用一种方式..我怎样才能在外部函数(app1,app2)中设置钩子来构建IF语句?把它们包在课堂上?如果是这样,我怎么能构建声明?
逻辑似乎没有意义,至少从我的PHP知识水平来看。我的目的是,我有两个功能(app1和app2),每个功能为两个独立的管理面板创建一组不同的选项。每个面板中的选项的构造函数和标记是相同的,它们将在“包装器”函数中。但是目前,必须使用两个独立的“包装器”函数来处理这个问题。 Panel1的一个功能和Panel2的另一个功能。
所以我的任务是组合两个包装函数,因为它有两个单独的函数基本上做同样的事情是多余的。这是代码的汇总位。如您所见,每个中唯一的区别是“$ panel_type = ...”位
function app1() {
$app1_options = array();
$app1_options[] = array(
'type' => 'text',
'name' => 'Text Field',
'id' => 'text_field_one'
);
return $app1_options;
}
function app2() {
$app2_options = array();
$app2_options[] = array(
'type' => 'text',
'name' => 'Text Field',
'id' => 'text_field'
);
return $app2_options;
}
function wrapper_panel1() {
$panel_type = app1();
foreach( $panel_type as $value ) {
switch ( $value[ 'type' ] ) {
case 'text':
// input stuff
break;
}
}
}
function wrapper_panel2() {
$panel_type = app2();
foreach( $panel_type as $value ) {
switch ( $value[ 'type' ] ) {
case 'text':
// input stuff
break;
}
}
}
所以真的想找到将这两个函数合并在一起的某种方式,例如:
function wrapper() {
if ( app1() ) {
$panel_type = app1();
}
if ( app2() ) {
$panel_type = app2();
}
foreach( $panel_type as $value ) {
switch ( $value[ 'type' ] ) {
case 'text':
// input stuff
break;
}
}
}
可以在此设置类/对象吗?或任何可以实现此目的的变化。
真的很感激可以提供任何帮助。谢谢!
答案 0 :(得分:1)
只需将app id传递给包装函数:
function wrapper_panel ($appId) {
$optsFunc = 'app'.$appId;
$panel_type = $optsFunc();
foreach( $panel_type as $value ) {
switch ( $value[ 'type' ] ) {
case 'text':
// input stuff
break;
}
}
}
// In app1:
wrapper_panel(1);
// In app2:
wrapper_panel(2);
...或者更好,在调用它时将选项传递给包装函数:
function wrapper_panel ($panel_type) {
foreach( $panel_type as $value ) {
switch ( $value[ 'type' ] ) {
case 'text':
// input stuff
break;
}
}
}
// In app1
wrapper_panel(app1());
// In app2
wrapper_panel(app2());
修改
考虑到Wordpress施加的限制,我认为最简单,最不可怕的事情是从wrapper_panel()
和app1()
函数中调用app2()
:
function app1() {
$app1_options = array();
$app1_options[] = array(
'type' => 'text',
'name' => 'Text Field',
'id' => 'text_field_one'
);
wrapper_panel($app1_options);
}
function app2() {
$app2_options = array();
$app2_options[] = array(
'type' => 'text',
'name' => 'Text Field',
'id' => 'text_field'
);
wrapper_panel($app2_options);
}
function wrapper_panel ($panel_type) {
foreach( $panel_type as $value ) {
switch ( $value[ 'type' ] ) {
case 'text':
// input stuff
break;
}
}
}
...并使用Wordpress注册app1
和app2
函数,而不是wrapper_panel
函数。