2011-09-14 35 views
0

私はいくつかの小さな変数の命名の違いを除けば、かなり重複しているいくつかのPHPコードを持っています。どのように私は引数を渡すことができる再利用可能な関数にこれを有効にすることができますか?PHPの関数に引数を渡す

これは私が2回使用しているコードです。もう1つは、「アフィリエイト」のすべての参照が「ソーシャル」に変更されていることを除いて、同じです。

<?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)); ?>

のような関数を呼び出すことができます

再利用可能な機能にそれらを組み合わせて処理時間/リソースを節約するか、それとも重要ではないでしょうか?

答えて

0

実際に変更されるのはカテゴリIDだけなので、これを関数に渡すだけです。

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

Heh ..愚かな私。私はその点を見過ごした。私はそれが眠る時だと思う。あまりにも悪い私は今投稿を削除することはできません。 – gavsiu

0

コードを2回保守する必要がないため、コンピュータの時間を節約できず、時間が節約されます。 (ただし、それを関数に変換しても、2回だけではなく、もっと多くの労力を費やす必要はありません。)

また、「社会的」という言葉を関数に渡す理由はありませんどこでも。

関連する問題