Domanda

È legale?

<?php

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
      //lots_of_awesome_code
}

?>

dove MENU_DEFAULT_VALUE e ODP_DEFAULT_VALUE sono costanti definite in precedenza nel file.

È stato utile?

Soluzione

Sì, è legale.

Da il manuale :

  

Il valore predefinito deve essere una costante   espressione, non (ad esempio) a   variabile, un membro della classe o una funzione   chiamare.

Le costanti si adattano perfettamente a quel conto.

Altri suggerimenti

In un contesto OOP, è anche possibile utilizzare una costante membro della classe come valore di argomento del metodo predefinito.

class MyClass
{
    const A = 1;

    public function __construct($arg = self::A)
    {
        echo $arg;
    }
}

perché non provi?

Tuttavia, nel caso in cui sia possibile provare subito, il seguente codice:

define('MENU_DEFAULT_VALUE', 10);
define('ODP_DEFAULT_VALUE', 'hello');

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
    var_dump($foo);
    var_dump($nub);
    var_dump($odp);
}

ftw();

fornisce questo output:

string 'pwnage' (length=6)
int 10
string 'hello' (length=5)

Quindi direi che sì, è valido :-)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top