• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak napisać metodę, która będzie mogła obsłużyć niewiadomą liczbę argumentów?

0 głosów
117 wizyt
pytanie zadane 26 czerwca 2016 w PHP, Symfony, Zend przez HaKIM Maniak (71,440 p.)

Hej,

Mam problem. Otóż nie wiem jak stworzyć metodę, w języku php, do której będzie można włożyć niewiadomą liczbę argumentów, a ona się nie wysypie.

Trochę dokładniej:

Załóżmy, iż mamy taki kod:

$class = new Class();
$class->method('argument1', 'argument2');

Nasza metoda wygląda mniej więcej tak:

public function method($argument1, $argument2)
{
    echo $argument1 . $argument2;
}

- Wszystko cacy. Ale...

Co jeśli dodamy kolejny argument?

$class->method('argument1', 'argument2', 'argument3');

 - Program się wyspie.

Więc moje pytanie brzmi: Jak stworzyć metodę, która byłaby gotowa na jakąkolwiek ilość dodanych składowych?

3 odpowiedzi

+6 głosów
odpowiedź 26 czerwca 2016 przez xandros Pasjonat (24,940 p.)
wybrane 26 czerwca 2016 przez HaKIM
 
Najlepsza

http://php.net/manual/en/function.func-get-args.php

function methodName(){
    $arguments = func_get_args();
}

lub

function methodName(...$arguments){
   /** @var $arguments array */
}

 

komentarz 26 czerwca 2016 przez HaKIM Maniak (71,440 p.)
Dokładnie o to mi chodziło!

Dziękuję!

Nie będę się musiał bawić w foreach, i inne cuda. ;_;
+1 głos
odpowiedź 26 czerwca 2016 przez Porcupine Nałogowiec (31,720 p.)

http://php.net/manual/en/functions.arguments.php

Pod nagłówkiem: "Variable-length argument lists" :) ¶

komentarz 26 czerwca 2016 przez xandros Pasjonat (24,940 p.)
komentarz 26 czerwca 2016 przez HaKIM Maniak (71,440 p.)
Hmm... Nie koniecznie chodziło mi o to, o czym piszesz. Tak czy owak, z Twojego linku udało mi się wyczytać to, co było mi potrzebne.

Dziękuję za pomoc.

Tematu jeszcze nie zamykam, gdyż może pojawić się pewien błąd, którego nawiasem mówiąc się spodziewam.
0 głosów
odpowiedź 26 czerwca 2016 przez Magicone Nałogowiec (44,680 p.)
Hmm… tbh zasady czystego kodu "zabraniają" tworzenia funkcji/metod wymagających więcej niż 3 argumenty (ba, nawet 3 to już jakaś wyższa konieczność). Prawda jest taka, że powinny być one zastępowane obiektami odpowiedniej klasy, bądź po prostu tablicami.
1
komentarz 26 czerwca 2016 przez xandros Pasjonat (24,940 p.)

zapomniałeś o `sprintf`

listy argumentów jak w funkcji „printf” są w porządku nawet jeśli pozornie przekazujemy ich np. 5, bo tak samo traktujemy wszystkie argumenty z listy argumentów

I wydaje mi się, że właśnie o taką budowe jemu chodzi. 

komentarz 26 czerwca 2016 przez Comandeer Mentor (364,880 p.)

tbh zasady czystego kodu "zabraniają" tworzenia funkcji/metod wymagających więcej niż 3 argumenty (ba, nawet 3 to już jakaś wyższa konieczność)

Zgodnie z OOP, używanie $this już świadczy o tym, że nasz kod nie jest tak czysty jak mógłby → https://r.je/this-keyword-isnt-oop.html

Także co do czystego kodu moja odpowiedź jest zawsze taka sama: nie dajmy się zwariować. 

Podobne pytania

0 głosów
3 odpowiedzi 217 wizyt
0 głosów
1 odpowiedź 68 wizyt
pytanie zadane 30 sierpnia w PHP, Symfony, Zend przez `Krzychuu Gaduła (4,830 p.)
Obowiązuje już zaktualizowany regulamin.

Czy wiesz, że nie musisz już odświeżać strony głównej?

Lista pytań i odpowiedzi aktualizuje się automatycznie!

38,606 zapytań

76,489 odpowiedzi

149,376 komentarzy

18,071 pasjonatów

Przeglądających: 318
Pasjonatów: 31 Gości: 287

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...