首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将两个函数与其中的计数器组合在一起

将两个函数与其中的计数器组合在一起
EN

Stack Overflow用户
提问于 2014-03-01 08:39:09
回答 1查看 67关注 0票数 0

我有以下功能

代码语言:javascript
运行
复制
    function header_class() {
    $count = 0;

    if ( is_active_sidebar( 'sidebar-15' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-16' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-17' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-18' ) )
        $count++;   

    $class = '';

    switch ( $count ) {
        case '1':
            $class = 'one';
            break;
        case '2':
            $class = 'two';
            break;
        case '3':
            $class = 'three';
            break;
        case '4':
            $class = 'four';
            break;  
    }

    if ( $class )
        echo 'class="' . $class . '"';
}


function footer_class() {
    $count = 0;

    if ( is_active_sidebar( 'sidebar-11' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-12' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-13' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-14' ) )
        $count++;   

    $class = '';

    switch ( $count ) {
        case '1':
            $class = 'one';
            break;
        case '2':
            $class = 'two';
            break;
        case '3':
            $class = 'three';
            break;
        case '4':
            $class = 'four';
            break;  
    }

    if ( $class )
        echo 'class="' . $class . '"';
}

我试图将它们合并为一个函数,即theme_body_classes。现在,这段代码对于这两个函数都是通用的,因此不需要重复它们。

代码语言:javascript
运行
复制
$class = '';

    switch ( $count ) {
        case '1':
            $class = 'one';
            break;
        case '2':
            $class = 'two';
            break;
        case '3':
            $class = 'three';
            break;
        case '4':
            $class = 'four';
            break;  
    }

    if ( $class )
        echo 'class="' . $class . '"';

我的问题是,如何在不填充计数器的情况下将这两个函数的其他部分(如下面的示例)组合在一起。

代码语言:javascript
运行
复制
$count = 0;
//counter1
    if ( is_active_sidebar( 'sidebar-15' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-16' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-17' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-18' ) )
        $count++;

    //counter 2
    if ( is_active_sidebar( 'sidebar-11' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-12' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-13' ) )
        $count++;

    if ( is_active_sidebar( 'sidebar-14' ) )
        $count++;   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-01 09:05:43

读一些关于“依赖注入”的文章,这是一种很好的模式.

代码语言:javascript
运行
复制
function get_sidebar_class( $sidebars ) {
    // cound active sidebars
    $count = 0;
    foreach ($sidebars as $sidebar)
        if ( is_active_sidebar( $sidebar ) )
            $count++;

    // name the class state
    $classes = [ 0=>'', 'one', 'two', 'three', 'four' ];    
    $class = isset($classes[$count]) ? $classes[$count] : '';

    // output information
    if ( $class )
        echo sprintf( 'class="%s"', $class);
}

get_sidebar_class( ['sidebar-11', 'sidebar-12', 'sidebar-13', 'sidebar-14'] );
get_sidebar_class( ['sidebar-15', 'sidebar-16', 'sidebar-17', 'sidebar-18'] );

这个语法需要>= 5.4版本中的php。如果仍然使用旧版本,则必须使用显式数组构造:get_sidebar_class( array('sidebar-11', 'sidebar-12', 'sidebar-13', 'sidebar-14') );$classes = array( 'one', 'two', 'three', 'four' );.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22112136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档