Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zmienna domyślnym parametrem funkcji
ZuyPan
post 10.08.2011, 19:32:17
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

Ostrzeżenie: (0%)
-----


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.


--------------------
Blog
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
cycofiasz
post 10.08.2011, 19:41:33
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post
ZuyPan
post 10.08.2011, 19:48:35
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował ZuyPan 10.08.2011, 19:49:52


--------------------
Blog
Go to the top of the page
+Quote Post
darko
post 10.08.2011, 20:13:41
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Wystarczyło dać:

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



--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:36