Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak działa define()
Forum PHP.pl > Forum > Przedszkole
matahmed
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.
nospor
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?
darko
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.
phpion
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.
matahmed
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...
nospor
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++
Gość
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
redeemer
W C/C++ nazywa się to preprocessor. C Compatible Preprocessor for PHP: http://code.metala.org/p/ccpp/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.