Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak działa define()
-matahmed-
post 19.12.2011, 12:30:17
Post #1





Goście







Mój problem polega na tym że zazwyczaj używam c++ a php tylko w razie nagłej potrzeby wink.gif. Zasdniczo chodzi o to że napisałem funkcję która przyjmuje dużo parametrów. Ponieważ często tą funkcję wywołuję postanowiłem sobie zdefiniować jakiś literał -> żeby usprawnić pisanie kodu.

zrobiłem to w następujący sposób:

  1. define('parametry', "'ROZKAZ', 3 , 'dane', 4 , 'jakis_string', 4");


wywołanie funkcji:

  1. jakas_funkcja(parametry);


Problem jest taki że funkcja wywołuje się z jednym parametrm równym stringowi -> 'ROZKAZ', 3 , 'dane', 4 , 'jakis_string', 4

a chciałbym żeby wywoła się z 6 parametrami (3 stringami i 3 int'ami).

Ktoś wie jak rozwiązać taki problem, ew wytłumaczyć jak działa funkcja define w php?

Od razu uprzedzę komentarze w stylu: "Po co do 6 argumentów definiować literałquestionmark.gif" - problem który przedstawiłem to duże uproszczenie mojego problemu, ale obrazuje o co mi chodzi. Z góry dzięki za każdą pomoc.
Go to the top of the page
+Quote Post
nospor
post 19.12.2011, 12:36:27
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




define definiuje stałą, która może być tekstem czy też liczbą. I ty właśnie definiujesz tekst a nie parametry funkcji
Zaś twoja funkcja wymaga podania 6 parametrów a nie jednego. Skąd niby funkcja ma wiedzieć, że to co podałeś to ty sobie zamażyłeś by ona to traktowała jako 6 parametrow?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
darko
post 19.12.2011, 12:38:18
Post #3





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

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


Define przyjmuje dwa parametry wymagane i jeden opcjonalny. Tego w ten sposób nie zrobisz. Użyj tablicy parametrów i przekaż ją do funkcji.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
phpion
post 19.12.2011, 12:39:17
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




define działa tak. Dziwisz się, że do funkcji przekazywany jest ciąg znaków? No ale taką wartość przyjmuje Twoja stała. Jeśli chcesz tą wartość przekształcić na tablicę to skorzystaj chociażby z explode, po czym przekaż ją do call_user_func_array w celu wywołania funkcji z parametrami.
Go to the top of the page
+Quote Post
-matahmed-
post 19.12.2011, 12:41:36
Post #5





Goście







może inaczej: w c++ zobiłbym to tak:

#define parametry "ROZKAZ", 3 , "dane", 4 , "jakis_string", 4

kompilator na przed kompilacją w każde miejsce w kodzie gdzie występuje słowo "parametry" wstawi to co jest zdefiniowane. Czyli dla kompilatora sformułowanie:

jakas_funkcja(parametry)

będzie oznaczało dokładnie:

jakas_funkcja("ROZKAZ", 3 , "dane", 4 , "jakis_string", 4)

dlatego moje pytanie jak działa funkcja define w php...
Go to the top of the page
+Quote Post
nospor
post 19.12.2011, 12:42:50
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
dlatego moje pytanie jak działa funkcja define w php...
No i dostałeś odpowiedź.... ba, i to nawet nie jedną. Więc to teraz przeczytaj i przestan patrzeć jak było w c++ bo php to nie c++


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-Gość-
post 19.12.2011, 12:47:21
Post #7





Goście







Cytat(nospor @ 19.12.2011, 12:42:50 ) *
No i dostałeś odpowiedź.... ba, i to nawet nie jedną. Więc to teraz przeczytaj i przestan patrzeć jak było w c++ bo php to nie c++



Bez nerwów biggrin.gif - napisałem to jako odpowiedź na drugiego posta w tym temacie -> w trakcie pisania pojawiły się kolejne odpowiedzi których nie zdążyłem wtedy przeczytać. Już mniej więcej wiem jak rozwiązać problem .

Wszystkim dzieki za pomoc
Go to the top of the page
+Quote Post
redeemer
post 19.12.2011, 14:05:51
Post #8





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


W C/C++ nazywa się to preprocessor. C Compatible Preprocessor for PHP: http://code.metala.org/p/ccpp/


--------------------
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: 24.06.2025 - 09:32