Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienna domyślnym parametrem funkcji
Forum PHP.pl > Forum > Przedszkole
ZuyPan
Witam.
Czy jest jakiś sposób aby zmienna była domyślnym parametrem funkcji?
Mam taki kod:
  1. <?php
  2. $a = 'domyślna wartość';
  3. $b = 'cos innego';
  4.  
  5. function funkcja ($c, $d = $a){
  6. return 'Domyślna wartość: '. $d . '. <br>Zawartość zmiennej $b: '. $c .'.';
  7. }
  8.  
  9. funkcja ($b);
  10.  

Jednak gdy próbuje zrobić coś takiego dostaje:
Parse error: syntax error, unexpected T_VARIABLE in [...] on line [...]
Oczywiście wszystko działa gdy linię
  1. function funkcja ($c, $d = $a){

podmienię na coś takiego
  1. function funkcja ($c, $d = 'cos domyslnego'){

czyli zwykły tekst. Jednak ja potrzebuje aby tam nie było czegoś na sztywno tylko aby ustawiało się to ze zmiennej która będzie stworzona gdzieś wcześniej w kodzie.
cycofiasz
Nie, cytat z manuala:

The default value must be a constant expression, not (for example) a variable, a class member or a function call.

Można jednak w definicji funkcji zrobić taki trick:

  1. $param_def = 'cos';
  2.  
  3. function foo($param1)
  4. {
  5. global $param_def;
  6. if($param1 === false) $param1 = $param_def;
  7. }
  8.  
  9. foo(false);


Co prawda zawsze musisz przekazać do funkcji jakiś $param1 ale jeśli będzie on miał wartość logiczną false to wtedy przyjmie wartość zmiennej $param_def;
ZuyPan
Działa, drobna modyfikacja i nie muszę podawać argumentu wink.gif
  1. <?php
  2.  
  3. function profil_tooltip($a){
  4.  
  5. global $a;
  6.  
  7. if($a == null){ $a = $config_tmp; }
  8.  
  9. include ('tmp/'.$a.'/profil_tooltip.php');
  10.  


Teraz nawet jak nie podam żadnego parametru funkcja przyjmie jako zawartość zmiennej $a to co jest w zmiennej konfiguracyjnej całego cms $config_tmp. I dzięki temu mogę wczytać odpowiedni plik tmp smile.gif
darko
Wystarczyło dać:

  1. function funkcja ($c, $d = 'domyslna wartosc'){

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.