Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie nazwy zmiennej przekazywanej do funkcji
treewood
post 21.10.2004, 09:12:22
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


Czy wiecie jak sprawdzic jaka nazwa zmiennej byla wrzucona do funkcji?

przyklad:

  1. <?php
  2.  
  3. function throwSomething( $iSomething, $sNameOfVariable ){
  4. ....
  5. }
  6.  
  7. $iNameOfVariable = 1;
  8.  
  9. echo throwSomething( $iNameOfVariable, 'iNameOfVariable' );
  10.  
  11. ?>


tutaj musze przekazywac nazwe zmiennej czy jest mozliwosc obejscia tego?
czyli jak w funkcji sprawdzic jaka nazwa zmienna a takze jej wartosc zostala przekazana do funkcji


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post
j00seph
post 21.10.2004, 11:17:35
Post #2





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 3.10.2004
Skąd: Taka wiocha koło Cieszyna :P

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


Hmm...

Wyciagniecie nazwy parametru fnkcji - nie wydaje mi sie aby to było możliwe -chodziaż moge się mylić.
A nawet jeśli to jest możliwe to nie widzę w tym żadnego sensu...

Jeśli możesz rozwiń bardziej ten temat - co chcesz dokładnie zrobić i na co ci wyciąganie z funkcji


--------------------
"Nemo Sine Vitiis Est" - Ktoś tak kiedyś powiedział... i miał rację.
Go to the top of the page
+Quote Post
treewood
post 21.10.2004, 11:28:07
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


patrz ... masz funkcje
  1. <?php
  2.  
  3. function delRow( $sTable, $sId, $iId ){
  4.  mysql_query( 'DELETE FROM '.$sTable.' WHERE '.$sId.'='.$iId );
  5. }
  6.  
  7. ?>


zamiast przekazywac nazwe pola po ktorym ma byc weryfikowane usuwanie to mozna po prostu wcisnac zmienna i nazwa zmiennej to nazwa pola a wartosc zmiennej to wartosc pola.

takich przykladow mozna mnozyc ... przyklad wymyslony na szybko


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post
kszychu
post 21.10.2004, 11:39:10
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Użyj tablicy. Z niej łatwo wyciągniesz indeks komórki.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
Seth
post 21.10.2004, 11:47:32
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Nazw zmiennych przeslanych do funkcji nie mozna pobrac (a przynajmniej nie znalazlem nic na ten temat) ale mozesz pobrac ich wartosci przez func_get_args()" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
treewood
post 21.10.2004, 11:52:44
Post #6





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


krzychu - jej bez jaj po co sobie utrudniac zycie i wrzucac tablice i tworzyc ja do tego trzeba by jeszcze jakas funkcje zapodac, ktore wyszykuje danego indeksu ...

Seth - dzieki ale to juz znam


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post
hawk
post 21.10.2004, 12:21:39
Post #7





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


Nie sądzę abyś to znalazł. Bo jest to bardzo niebezpieczne. Że tak powiem, evil. Nazwa zmiennej to nazwa - można sobie zmieniać i robić co się komu podoba. I nie powinno to psuć kodu.
Co nie znaczy że nie może się to kiedyś przydać. Ale ponieważ ogólnie jest to rzecz z kategorii evil, więc raczej nie będzie tego w żadnym języku.
Go to the top of the page
+Quote Post
treewood
post 21.10.2004, 12:44:16
Post #8





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


eval( ); tez nie jest raczej zbyt bezpieczna funkcja ...

uwazam, ze to glupie gadanie ... uzywa sie czegos wtedy jesli sie tego umie uzywac ... a jesli sie nie umie to sie robi safe mode, limit czasu wykonania, register_globals, error_reporting i wiele innych restrykcji


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post
rogrog
post 21.10.2004, 14:37:19
Post #9





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


był już taki topic, dokladnie taki sam

popatrzcie na jedną rzecz - parametry są do funkcji przekazywane przez wartość

dla php [na poziomie wykonywanej funkcji] nie ma przecież różnicy

  1. <?php
  2.  
  3. function x($y){
  4. }
  5.  
  6. // nie ma roznicy czy jest
  7. $foo = 1;
  8. x($foo);
  9.  
  10. //czy np.
  11. x(1);
  12.  
  13. ?>


a to dlatego że przekazywana jest tylko wartosc...


--------------------
Go to the top of the page
+Quote Post
pp-layouts
post 16.01.2008, 18:49:03
Post #10





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 28.09.2007
Skąd: Gdynia

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


otóż ja widzę zastosowanie czegoś takiego - powiedzmy, że potrzebuję funkcji, która szybko przetworzy mi dowolną listę parametrów.

przykład z życia, czyli kodu który aktualnie robię:

$name = ..............
$email = ..............
$message = .............
(itede itede, jest jeszcze kilka takich)

na końcu jest $db->query("insert into tabela ( name, email, message .... ) values ( $name, $email, $message ...... );

oczywiście pomiędzy jednym a drugim musi, ze względów bezpieczeństwa znaleźć się coś w stylu:

$name = mysql_real_escape_string($name);
$email = mysql_real_escape_string($email);
....
itede...

takie powtarzanie kodu jest evil. wiem, mogę wrzucić pola do tablicy i grzecznie przetworzyć tablicę, ale czy nie byłoby prościej i przyjemniej, gdybym mógł użyć funkcji $db->escape(&$name, &$email, &$message) ?

próbowałem stworzyć taką funkcję, ale niestety php ma tutaj ograniczenie, bo jeśli używam tablicy func_get_args, to zawiera ona tylko kopie argumentów, tak więc zawartość argumentów nie ulegnie zmianie. gdyby tak klucze tablicy func_get_args zamiast numerków zawierały nazwy zmiennych - wtedy wszystko działałoby ok.

i to wcale nie jest evil - bo kod nie ma się jak wysypać. cokolwiek zostanie użyte jako argument, zostanie przetworzone (lub nie, jeśli podano bez &)

a może jest tu h4x0r który potrafi taką cudaczną funkcję zrobić? ;>

eee...
teraz mi głupio, bo się okazuje, że jest obejście proste jak drut:

CODE

<?

function test($array) {
foreach ( $array as $n=>$v ) {
$array[$n] = strtolower($v);
}
}

$a = 'RAZ'; $b = 'DWA'; $c = 'TRZY';
test(array(&$a, &$b, &$c));

echo "a=$a, b=$b, c=$c";

?>
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: 25.06.2025 - 16:43