PHP:如何在另一个函数中检查函数的返回值

时间:2013-12-07 13:12:25

标签: php wordpress function return echo

我有一个函数,它返回一个我想通过另一个值检查的值。据我所知,我无法在第一个函数中回显它,因为它在body_class的wordpress过滤器中使用并在那里输出。

那么,我如何检查另一个函数中返回的值是什么?

返回$ class的第一个函数示例,这是我要检查的内容:

function layout_class( $class ) {
    // There is lots of more functionality here for the $layout variable
    $layout = 'col-3cm';

    $class[] = $layout;
    return $class;
}
add_filter( 'body_class', 'layout_class' );

现在,此类决定是否加载辅助侧边栏模板。所以我想这样做:

function sidebar_dual() {
    $layout = layout_class();   
    if (
        ( $layout == 'col-3cm' ) ||
        ( $layout == 'col-3cl' ) ||
        ( $layout == 'col-3cr' )
    )
    { get_template_part('sidebar-2'); }
}

由于我无法回显第一个函数,并且不想编写另一个函数,因为它非常大 - 我该如何处理它?是否有一种简单的方法来检查返回值,类似于echo?

2 个答案:

答案 0 :(得分:0)

如果您在$class中留空layout_class($class),则无论如何您的功能无效。您需要为变量layout_class($class = null)声明一些内容,或者如果您将其称为layout_class(null),但如果您没有声明它,则它将无法按照您设置它的方式工作。

其余代码没问题。

此外,您已在函数中声明$class,并且您将其用作函数中的变量,我会重命名您的输出,即

function layout_class( $class ) {
    // There is lots of more functionality here for the $layout variable
    $layout = 'col-3cm';

    return $layout;
}

答案 1 :(得分:0)

看起来您需要重构代码。

您只需将确定布局的代码移动到一个单独的函数中,您可以在过滤器内部和sidebar_dual()函数内部调用:

function get_layout_mode(){

   // There is lots of more functionality here for the $layout variable
   $layout = 'col-3cm';

   return $layout;
}

过滤功能变为:

function layout_class( $class ) {
    $class[] = get_layout_mode();
    return $class;
}
add_filter( 'body_class', 'layout_class' );

sidebar_dual()函数调用中get_layout_mode()而不是layout_class()


通过将WP的get_body_class()函数返回的字符串拆分为数组,然后检查数组中是否存在这3个类中的任何一个,也可以使用当前代码。我会选择第一个选项,因为它更清楚。

相关问题