我试图在函数中设置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;
}
}
}
可以在上面设置一个类/对象吗?或者任何可以实现这一点的变革。
非常感谢在这方面能提供的任何帮助。谢谢
只需将应用程序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的限制,我认为最简单、最不可怕的事情就是从app1()
和app2()
函数中调用wrapper_panel()
:
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
功能。