PHP isteğe bağlı fonksiyon girişler

3 Cevap php

Böyle str_replace gibi işlevleri bazı yerleşik PHP isteğe bağlı giriş değişkenleri olduğunu fark. Ben kendi fonksiyonları isteğe bağlı giriş değişkenleri var olabilir? Eğer öyleyse, nasıl?

Thanks, Brian

3 Cevap

Birinci yol, bazı argümanlar için varsayılan değerleri kullanmak için:

function doStuff($required, $optional = '', $optional2 = '') {
  ...
}

Şimdi sadece varsayılan bir değer içerir ve sonra birisi yapabilirsiniz:

doStuff('foo');
doStuff('foo', 1);
doStuff('foo', 2, 3);

Sen alan belirtilmedi ise uygun bir varsayılan değer seçmek için ya da hiçbir değeri ayarlı olduğunu belirtmek gerekir. Tipik örnekler '', 0, false, null ya da array() vardır.

Yoksa ile tüm bunları belirtmek gerekir func_get_args() yok:

function doStuff() {
  print_r(func_get_args());
}

func_get_args() açık bağımsız değişkenleri (birinci örnek) ile birlikte de kullanılabilir.

Yapabileceğiniz başka bir alternatif bu ...

EDIT

şimdi biraz yararlı işlevi ..

function getLongestString() {

    $strings = func_get_args();

    $longestString = '';


    foreach($strings as $string) {
        if (strlen($longestString) < strlen($string)) {
            $longestString = (string) $string;
        } 
    }

    return $longestString;

}

Eğer bu gibi kullanımı hangi

echo getLongestString('hello', 'awesome'); // awesome

Bu size isteyen tam olarak ne olmuş olabilir iken, bilmek hala iyi ve optional function inputs sorununu çözer.

Argümanların keyfi sıralamasını sağlayan ek bir seçenek:

function my_function($arguments) {
  if($arguments['argument1']) {
    // do something
  }

  if($arguments['argument2'] == 'LOLCAT') {
    // do something else
  }
}

my_function(array('argument1' => 1, 'argument2' => 'LOLCAT'));