передача аргументов функциям в php - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть некоторый php-код, который в значительной степени дублируется, за исключением незначительных различий в именах переменных.Как я могу превратить это в функцию многократного использования, где я могу передавать аргументы через?

Это код, который я использую дважды.Второй - тот же, за исключением того, что все ссылки на «аффилиат» заменены на «социальные».

<?php
    $affiliate = wp_list_bookmarks( array( 'categorize' => 0, 'category' => '7', 'title_li' => '', 'orderby' => 'rating', 'show_images' => 0, 'echo' => 0 ) );
    preg_match_all( '/<li>.*?<\/li>/', $affiliate, $affiliate_matches );
    foreach ( $affiliate_matches[0] as $affiliate_match ) {
        preg_match( '/title=".*?"/', $affiliate_match, $affiliate_title );
        echo str_replace(
            $affiliate_title[0],
            $affiliate_title[0] . ' ' . strtolower( str_replace( array( 'title="', ' ' ), array( 'class="', '-' ), $affiliate_title[0] ) ),
            $affiliate_match
        ) . "\n";
    }
?>

Другой:

<?php
    $social = wp_list_bookmarks( array( 'categorize' => 0, 'category' => '2', 'title_li' => '', 'orderby' => 'rating', 'show_images' => 0, 'echo' => 0 ) );
    preg_match_all( '/<li>.*?<\/li>/', $social, $social_matches );
    foreach ( $social_matches[0] as $social_match ) {
        preg_match( '/title=".*?"/', $social_match, $social_title );
        echo str_replace(
            $social_title[0],
            $social_title[0] . ' ' . strtolower( str_replace( array( 'title="', ' ' ), array( 'class="', '-' ), $social_title[0] ) ),
            $social_match
        ) . "\n";
    }
?>

Я думал, может быть, я могу позвонитьфункция типа

<?php links( array( 'affiliate', 7 ) ); ?>

или

<?php links( array( 'social', 2 ) ); ?>


объединит их в многократно используемую функцию, сэкономит время / ресурсы обработки илиэто не имеет значения?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2011

единственное, что действительно изменяется, - это идентификатор категории, поэтому вам нужно только передать это функции.

function links($categoryId) {
        $affiliate = wp_list_bookmarks( array( 'categorize' => 0, 'category' => $categoryId, 'title_li' => '', 'orderby' => 'rating', 'show_images' => 0, 'echo' => 0 ) );
        preg_match_all( '/<li>.*?<\/li>/', $affiliate, $affiliate_matches );
        foreach ( $affiliate_matches[0] as $affiliate_match ) {
            preg_match( '/title=".*?"/', $affiliate_match, $affiliate_title );
            echo str_replace(
                $affiliate_title[0],
                $affiliate_title[0] . ' ' . strtolower( str_replace( array( 'title="', ' ' ), array( 'class="', '-' ), $affiliate_title[0] ) ),
                $affiliate_match
            ) . "\n";
        }

    }
0 голосов
/ 14 сентября 2011

Это не сэкономит компьютерное время, оно сэкономит ваше время, поскольку вам не придется поддерживать код дважды.(Но обратите внимание, что преобразование его в функцию не заставляет вас тратить больше усилий, чем просто дважды).

Кроме того, я не вижу причин передавать слово «социальный» функции - это никогдафактически используется где угодно.

...