Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Stała+string jako argument domyślny funkcji, ... czy to możliwe?
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witajcie!
Natrafiłem na dziwne ograniczenie którego nie potrafię przeskoczyć:

  1. <?php
  2. define("TEST", "abc");
  3.  
  4. function foo($a = TEST) { print($a); } //Wynik: abc
  5. function bar($a = "def") { print($a); } //Wynik: def
  6. function foobar($a = TEST."def") { print($a); } //Wynik: Parse error: syntax error, unexpected '.', expecting ')'
  7. ?>


Oczywiście mogę zrobić to tak:
  1. <?php
  2. function foobar($a = TEST) { $a .= "def"; print($a); } //Wynik: abcdef
  3. ?>


Ale w żaden sposób nie kojarzy się to z dobrym stylem pisania i przejrzystością kodu. Czy w PHP niemożliwe jest zdefiniowanie argumentu domyślnego funkcji składającego się z 2 części?


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
michaJlS
post
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 9
Dołączył: 21.05.2004
Skąd: Glogau/Breslau

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


Cytat(kiler129 @ 29.08.2010, 03:35:30 ) *
  1. <?php
  2. function foobar($a = TEST) { $a .= "def"; print($a); } //Wynik: abcdef
  3. ?>


Ale w żaden sposób nie kojarzy się to z dobrym stylem pisania i przejrzystością kodu. Czy w PHP niemożliwe jest zdefiniowanie argumentu domyślnego funkcji składającego się z 2 części?


  1. function foobar($a=null){
  2. if(is_null($a)) $a = TEST.'def';
  3. // ...
  4. }


to co chcesz osiągnąć, to jeszcze "gorszy" styl pisania, bo w ogóle niepoprawny;) Ty to źle nazywasz, stąd ci się wydaje, że tak powinno się dać. To nie jest definiowanie domyślnego argumentu składającego się z dwóch części. To jest po prostu definiowanie domyślnego argumentu jako wynik pewnej operacji, a to jak sam wiesz jest zabronione.

Ten post edytował michaJlS 29.08.2010, 12:40:59
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 21.08.2025 - 05:02