Nasıl php isteğe bağlı bağımsız değişkenler oluşturmak?


190

PHP kılavuzunda, isteğe bağlı parametreleri olan işlevlerin sözdizimini göstermek için, her bağımlı isteğe bağlı parametre kümesinin çevresinde parantez kullanırlar. Örneğin, date()işlev için kılavuz şunları okur:

string date ( string $format [, int $timestamp = time() ] )

$timestampİsteğe bağlı bir parametre nerede ve boş bırakıldığında varsayılan olarak time()işlevin dönüş değeri kullanılır.

PHP'de özel bir işlev tanımlarken böyle isteğe bağlı parametreler oluşturmaya nasıl başlayabilirsiniz?

Yanıtlar:


253

El kitabında olduğu gibi =, parametreler tanımınızda eşittir ( ) işareti kullanın :

function dosomething($var1, $var2, $var3 = 'somevalue'){
    // Rest of function here...
}

function dosomething($var1, $var2, $optionalValue = null)Bu daha iyi bir seçenek buldum.
Mohammad Zaid Pathan

52

Bağımsız değişkenin varsayılan değeri sabit bir ifade olmalıdır. Bir değişken veya işlev çağrısı olamaz.

Ancak bu işlevselliğe ihtiyacınız varsa:

function foo($foo, $bar = false)
{
    if(!$bar)
    {
        $bar = $foo;
    }
}

Varsayarsak $bartabii bir boolean olması beklenmemektedir.


1
ancak, $ çubuğuna 0 veya "false" iletilip iletilmediğini değerlendirir.
Ocak'ta Tyzoid

33
Null çok daha iyi bir varsayılan değerdir.
Kzqai

3
@DooMMasteR, işte, $bar === falsebu - $barvarsayılan olarak ayarlandığında yapılması gereken bir eylemdir false. Bu 0, iletilirse yanlış eylemden kaçınacaktır , bu yüzden işe yarar - BİR boolean GEREKİR. Kzqai'nin dediği gibi, daha genel bir çözüm kullanmaktır $bar = null, çünkü bu, $ bar değerleri boolean olduğunda da kullanılabilir. Test daha sonra if (is_null($bar))veya olur if ($bar === null).
ToolmakerSteve

22

Yararlı bulduğum bazı notlar:

  • Varsayılan değerlerinizi sağ tarafta tutun.

    function whatever($var1, $var2, $var3="constant", $var4="another")
  • Bağımsız değişkenin varsayılan değeri sabit bir ifade olmalıdır. Bir değişken veya işlev çağrısı olamaz.


14

İsteğe bağlı bağımsız değişkene varsayılan bir değer verin.

function date ($format, $timestamp='') {
}

10

Tarih işlevi şu şekilde tanımlanır:

function date($format, $timestamp = null)
{
    if ($timestamp === null) {
        $timestamp = time();
    }

    // Format the timestamp according to $format
}

Genellikle, varsayılan değeri şu şekilde koyardınız:

function foo($required, $optional = 42)
{
    // This function can be passed one or more arguments
}

Ancak, yalnızca hazır bilgi kullandığım, bu yüzden de geçerli varsayılan argümanlar vardır null, ilk örnekte varsayılan argüman olarak değil $timestamp = time() , ve boş çek ile birlikte. Değişmez değerler dizileri ( array()veya []), booleanları, sayıları, dizeleri ve içerir null.


8

Kaç özniteliğin işlenmesi gerektiğini bilmiyorsanız ..., PHP 5.6'da sunulan değişken değişken argüman belirtecini ( ) kullanabilirsiniz ( buradaki tüm belgelere bakın ).

Sözdizimi:

function <functionName> ([<type> ]...<$paramName>) {}

Örneğin:

function someVariadricFunc(...$arguments) {
  foreach ($arguments as $arg) {
    // do some stuff with $arg...
  }
}

someVariadricFunc();           // an empty array going to be passed
someVariadricFunc('apple');    // provides a one-element array
someVariadricFunc('apple', 'pear', 'orange', 'banana');

Gördüğünüz gibi, bu simge temel olarak tüm parametreleri istediğiniz gibi işleyebileceğiniz bir diziye dönüştürür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.