Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Opcjonalny argument w funkcji
-kina0-
post 2.05.2008, 10:08:45
Post #1





Goście







Czesc

mam przypuscmy taka klase:

  1. <?php
  2.  
  3. class Pokaz extends Wyswietlanie
  4. {
  5.  
  6. function __construct()
  7. {
  8. parent::Wyswietlanie();
  9. }
  10.  
  11. function pokaz_strone($id_strony)
  12. {
  13. return $this->pobierz($id_strony);
  14. }
  15.  
  16. function pobierz($id)
  17. {
  18. // pobieranie z bazy danych
  19. }
  20.  
  21. }
  22. ?>


Nie moge sobie poradzic z rozwiazaniem mojego problemu. Otoz metoda pokaz_strone zawiera argument $id_strony
Jak mozna zrobic aby ten argument byl opcjonalny? jezeli podam ten argument to zostanie wyswietlona metoda pobierz, a jezeli nie to wyswietli sie inna metoda.

Bo w moim wypadku gdy nie wpisze argumentu wyswietla sie error Missing argument......
Jakies pomysly?
Powód edycji: Dodałem bbcode. /webdicepl
Go to the top of the page
+Quote Post
webdice
post 2.05.2008, 10:11:45
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. <?php
  2. function pokaz_strone($id_strony = 0)
  3. ?>


W metodzie tworzysz sobie odpowiedni warunek gdy zmienna id_strony będzie równa 0 (czyli gdy argument nie zostanie podany).

EDIT: Właśnie poprawiłem jeszcze przed tym jak napisałeś winksmiley.jpg. Niedawno wstałem.
Go to the top of the page
+Quote Post
Crozin
post 2.05.2008, 10:12:07
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Tak jak w przypadku normalnych f-cji:
  1. <?php
  2. function abcd($param = null){
  3. //pierwszy arg jest opcionalny
  4. if($param === null){
  5. //nie podano - badz podano wartosc domyslna
  6. }else{
  7. //podano
  8. }
  9. }
  10. ?>


EDIT:
@webdicepl: z tym, że trzeba zdefiniować domyślną wartość zmiennej - inaczej wywali nam errora winksmiley.jpg

Ten post edytował Crozin 2.05.2008, 10:12:56
Go to the top of the page
+Quote Post
scanner
post 2.05.2008, 10:13:31
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Po pierwsze, popraw swój post, pod względem języka polskiego oraz uzycia BBCode.
Po drugie, poczytać tutaj: http://pl.php.net/manual/en/functions.argu...guments.default
Po trzecie:
  1. <?php
  2. class Pokaz extends Wyswietlanie {
  3.  
  4. function __construct() {
  5. parent::Wyswietlanie();
  6. }
  7.  
  8. function pokaz_strone( $id_strony = null ) {
  9. return $this->pobierz($id_strony);
  10. }
  11.  
  12. function pobierz( $id ) {
  13. if( is_null( $id ){
  14. return 'Strona główna';
  15. }
  16. // pobieranie z bazy danych
  17. }
  18. }
  19. ?>


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
-kina0-
post 2.05.2008, 10:14:25
Post #5





Goście







Dzięki za przypomnienie, proszę o przyznanie 'pomógł'.

ps. Ostatnio w php pisalem około 1,5 roku temu, teraz wlasnie sobie przypominam 'jak to jest' winksmiley.jpg
Go to the top of the page
+Quote Post
-kina0-
post 2.05.2008, 10:15:41
Post #6





Goście







Niestety jako gosc nie moglem edytowac BBcode, przykro mi.
Musze sie zarejestrować.

// Zapomniałeś zamknąć tag bbcode, więc zapewne wiesz o co chodzi i Cię nie upominałem,
// ale na przyszłość staraj się nie pisać pod własnymi postami.
// ~webdicepl
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: 12.05.2025 - 10:06