Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] dynamiczne przekaznie argumentów do funkcji
Gligamesh
post 24.06.2012, 15:27:10
Post #1





Grupa: Zarejestrowani
Postów: 227
Pomógł: 0
Dołączył: 13.06.2003
Skąd: rykowice

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


Witajcie, nadziałem się na mały problem i nie wiem jak go rozwiązać, oto prosty przykład

  1. $controller = New $controller;
  2. $controller->$function($params);


params to jest tablica np
Kod
Array ( [0] => wartosc [1] => wartosc1 [2] => cos )


Chcę by z automatu tablica stanowiła argumeny funkcji w taki sposób jak byśmy to pisali z palca czyli np:
  1. function przyklad($wartosc, $wartosc1, $cos) {
  2. }

nie
  1. function przyklad($array) {
  2. }


poratuje ktoś ?

Ten post edytował Gligamesh 24.06.2012, 15:29:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
CuteOne
post 24.06.2012, 15:42:24
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


hmm argumenty to nie trasformersy, same się nie zmienią

zobacz tutaj: http://php.net/manual/en/function.func-get-args.php
Go to the top of the page
+Quote Post
korniks
post 24.06.2012, 15:53:24
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 22.03.2012

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


Pozwolę sobie stwierdzić, że nie ma możliwości aby wywołać funkcje z tablicą jako parametr, a odebrać w funkcji 3 różne argumenty.

Btw, jaki masz problem z przypisaniem poszczególnych elementów tablicy do zmiennych, przed wywołaniem albo w funkcji?
Go to the top of the page
+Quote Post
Gligamesh
post 24.06.2012, 15:53:43
Post #4





Grupa: Zarejestrowani
Postów: 227
Pomógł: 0
Dołączył: 13.06.2003
Skąd: rykowice

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


skoro params jest tablicą to argument jest tylko jedn i nazwę sobie można nadać dowolną więc nie widzę sensu stosowania func_get_args() bądź czegokolwiek podobnego. Ponadto efekt ciągle taki sam, czyli tablica i jedna funkcja więcej.

Cytat
Pozwolę sobie stwierdzić, że nie ma możliwości aby wywołać funkcje z tablicą jako parametr, a odebrać w funkcji 3 różne argumenty.

bo nie chodzi o to by przekaząć tablicę tylko odpowiedno ją zmodyfikować tak by funkcja przyjeła kilka argumentów (tu chyba moja wina że niesprecyzowaniem na początku, wydało mi się to jasne)

Cytat
Btw, jaki masz problem z przypisaniem poszczególnych elementów tablicy do zmiennych, przed wywołaniem albo w funkcji?
Przed jak widać spore inaczej bym nie zakłądał tematu.....
wewnątrz teoretycznie żadnych ale nie mam zamiaru tego robić w każdej klasie. Innymi słowy szybciej, ładniej, czytelniej, funkcjonalniej

Ten post edytował Gligamesh 24.06.2012, 16:05:44
Go to the top of the page
+Quote Post
Crozin
post 24.06.2012, 16:19:50
Post #5





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

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


ReflectionClass:newInstanceArgs
Go to the top of the page
+Quote Post
Gligamesh
post 24.06.2012, 16:42:32
Post #6





Grupa: Zarejestrowani
Postów: 227
Pomógł: 0
Dołączył: 13.06.2003
Skąd: rykowice

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


Można prosić konkretniej ? Bo z tego co widzę to nie bardzo, zwłaszcza że mi zależy na samej funkcji nie całej klasie.
Go to the top of the page
+Quote Post
Crozin
post 24.06.2012, 16:43:29
Post #7





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

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


W takim razie ReflectionFunction, ta sama metoda.
Go to the top of the page
+Quote Post
Gligamesh
post 24.06.2012, 16:54:14
Post #8





Grupa: Zarejestrowani
Postów: 227
Pomógł: 0
Dołączył: 13.06.2003
Skąd: rykowice

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


Przekopałem to i z tego co widzę w nielicznych przykładach i tak jest wymagana deklaracja więc totalnie mija się to z celem (sztuka dla sztuki). Chyba że masz coś innego na myśli ale ani wiedzy w tym zakresie ani magicznej kuli nie mam ,więc prosiłbym o jakiś szerszy opis.

Ten post edytował Gligamesh 24.06.2012, 17:02:26
Go to the top of the page
+Quote Post
Crozin
post 24.06.2012, 17:11:52
Post #9





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

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


Cytat
Chyba że masz coś innego na myśli ale ani wiedzy w tym zakresie ani magicznej kuli nie mam ,więc prosiłbym o jakiś szerszy opis.
Ale masz manuala i podany link jak wywołać konstruktor klasy, gdzie argumenty są podane w tablicy. Skoro nie o konstruktor, a o metodę chodzi wystarczyło poświęcić tych 15 sekund na znalezienie ReflectionMethod::invokeArgs(object, array). Poza opisem masz nawet przykład obrazujący jak na dłoni jak tego użyć.
Go to the top of the page
+Quote Post
zegarek84
post 24.06.2012, 22:16:42
Post #10





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


rany julek sciana.gif
call_user_func_array - masz tam przykłady...


Ten post edytował zegarek84 24.06.2012, 22:17:35


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Gligamesh
post 24.06.2012, 22:41:26
Post #11





Grupa: Zarejestrowani
Postów: 227
Pomógł: 0
Dołączył: 13.06.2003
Skąd: rykowice

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


no i dla call_user_func_array faktycznie wystarczyło 15 sekund, i na to też się zdecydowałem. Dziękuje.

co do pozostałych sugestii:
Cytat
Ta funkcja jest obecnie nieudokumentowana

z php mam bardzo mało styczności i raczej z musu. Wyraźnie napisałem że proszę o konkretniejszą informację, pewno nie bez powodu!

Ten post edytował Gligamesh 24.06.2012, 22:50:35
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: 19.07.2025 - 20:23