[php]Nazwa zmiennej przekazanej do funkcji

0

Szukalem i nic nie znalazłem wiec pytam. Problem jest następujący:

function funkcja_testowa(&$zmienna){
//??kod??
}

$test="asdfgh";

funkcja_testowa($test);

chciałbym żeby funkcja_testowa potrafiła wyciągnąć mi nazwe zmiennej użytej jako parametr funkcji, w tym wypadku chciałbym żeby np wydrukować za pomocą echo tekst "test", jeśli zmienna by się nazywała inaczej, np $cosinnego, to funkcja powinna drukować "cosinnego", nie interesuje mnie odwołanie do zmiennej $zmienna i przez nią modyfikacja zawartości, potrzebna mi jest nazwa zmiennej i nic innego. Dopuszczalne są dowolne modyfikacje powyższego kodu byle osiągnąć pożądany efekt.

0

Mogę się mylić, ale obawiam się, że jest to niemożliwe. Wewnątrz funkcji ta zmienna nazywa się inaczej.

0

a mi się wydaje ze możliwe, ale pytam nie czy ktoś wie czy to możliwe tylko czy wie jak


wpadły mi do głowy dwa pomysły, to się podziele, faktem jest że są one czasochłonne w pewnych wypadkach nawet bardzo ale powinny działać ;)
Rozwiązanie 1:

function test($zmienna,$file,$line){
$plik=file($file);
$dane=$plik[$line-1]; //numeracja w tablicy jest od 0 a w parserze od 1
preg_match('#test([[:space:]]*)\(\$([^,]*),([[:space:]]*)__FILE__([[:space:]]*),([[:space:]]*)__LINE__([[:space:]]*)\)#si',$dane,$out);
echo $out[2].'='.$zmienna;
}


$cos="asdf";
test($cos,__FILE__,__LINE__);

Rozwiązanie 2 tylko opisze:
przed załadowaniem zmiennej do funkcji ustaiwamy ją jako global, czyli

global $zienna;

nastepnie w funkcji w pętli sprawdzamy który element w tablicy $_GLOBALS pasuje do wartości przekazanej przez funkcje, faktem jest że może się zdażyć iż w tablicy sa dwie różne zmienne o tej samej wartości, dlatego ten sposób jest troche chybiony, chociaż z drugiej strony można też przekazać zmienną do funkcji przez operator & i porównując string ze zmienną w globals zmienić zmienną, jeśli w tablicy globals też zmieni sie wartosć to mamy naszą nazwe.

tak wiec troche na okretke ale da sie sprawdzić nazwe zmiennej ;)

0

Hmm... Ale to zmienia samo wywołanie funkcji... Na tej zasadzie można przy każdym wywołaniu dać test($test, 'test'); i też będzie dobrze ;P. Myślałem, że chodzi o operowanie tylko i wyłącznie na funkcji.

0

napisałem:

Dopuszczalne są dowolne modyfikacje powyższego kodu byle osiągnąć pożądany efekt.

faktem jest że byłoby znacznie wygodniej, ale jak wyczytałem w manualu php nie ma niestety omżliwości odowłania się do nazwy zmiennej ponieważ php stosuje do nich wyłącznie aliasy a nie wskaźniki, a użycie nazwa zmiennej odpadaz tego względu iż nie zawsze wiadome jest jakiej nazwy zmiennej się używa, np w pętli można dac $$tablica[x] i odwoływać się do zmiennych których nazwy są dostępne w tablicy

1 użytkowników online, w tym zalogowanych: 0, gości: 1