Fonksiyonların parametreleri okuma en iyi yolu nedir?

0 Cevap php

I've created several helper functions which I use when creating templates for Wordpress. An example is this:

function the_related_image_scaled($w="150", $h="150", $cropratio="1:1", $alt="", $key="related" )

Sorun sadece $alt parametre birlikte geçirmek istiyorsanız, ben de $w, $h ve $cropratio doldurmak zorunda olduğunu.

Benim eklentileri birinde, aşağıdaki kodu kullanabilirsiniz:

function shortcode_display_event($attr) { 
    extract(shortcode_atts(array(
        'type' => 'simple',
        'parent_id' => '',
        'category' => 'Default',
        'count' => '10',
        'link' => ''
    ), $attr));

  $ec->displayCalendarList($data); 
}

Bu bana sadece örneğin count=30 kullanarak işlevini çağırmak için izin verir.

Nasıl kendi fonksiyonları aynı şeyi elde edebilirsiniz?

SOLUTION
Thanks to my name brother (steven_desu), I have come up with a solution that works.

Bir dize çifti - Ben değer yaratmak için (Ben net üzerinde bulunan) bir ekstra fonksiyonu eklendi.

Aşağıdaki gibi kod görünüyor:

// This turns the string 'intro=mini, read_more=false' into a value - pair array
function pairstr2Arr ($str, $separator='=', $delim=',') {
    $elems = explode($delim, $str);
    foreach( $elems as $elem => $val ) {
        $val = trim($val);
        $nameVal[] = explode($separator, $val);
        $arr[trim(strtolower($nameVal[$elem][0]))] = trim($nameVal[$elem][1]);
    }
        return $arr;
}

function some_name($attr) {
  $attr = pairstr2Arr($attr);

  $result = array_merge(array(
        'intro' => 'main',
        'num_words' => '20',
        'read_more' => 'true',
        'link_text' => __('Read more')
    ), $attr);

  extract($result);

  // $intro will no longer contain'main' but will contain 'mini'
  echo $intro;
}

some_name('intro=mini, read_more=false')

Info
With good feedback from Pekka, I googled and found some info regarding the Named Arguments and why it's not in PHP: http://www.seoegghead.com/software/php-parameter-skipping-and-named-parameters.seo

0 Cevap