Ostatnio znajomy zwrócił mi uwagę, żebym nie używał funkcji extract() w moim kodzie. Nie potrafił mi jednak jasno wytłumaczyć dlaczego nie powinienem tego robić. Bardzo lubię tą funkcję, jest szybka, elegancka i zaoszczędza mi dużo pisania. Jakie są wady jej użycia?
|
3
|
|
|
|
|
3
|
extract zrobic ci z indeksów tablicy asocjacyjnej zmienne takie jak klucze czyli z tablicy array( 'jeden' => 'wartosc', 'dwa' => 'wartosc' ) bedziesz miał dwie zmienne $jeden i $dwa. Jeśli nieuważnie użyjesz tej funkcji doporowadzisz do sytuacji kiedy nadpiszesz sobie jakieś zmienne i będzie Ci to cięzko zdebugować. extract najlepiej używać w krótkich metodach kiedy masz pełną kontrolę nad zadeklarowanymi zmiennymi Jeśli masz wątpliwości zajrzyj do manuala http://pl.php.net/manual/en/function.extract.php |
||
|
|
|
3
|
Problem z extract polega na tym że zaciemnia kod. Na pierwszy rzut oka nie jesteś w stanie określić skąd pochodzą zmienne czy są to zmienne globalne czy lokalne czy argumenty funkcji. Funkcja extract może odrobinę przyśpieszyć pisanie kodu ale w przypadku gdy wracasz do jakiegoś fragmentu po dłuższym czasie może wydłużyć np. szukanie błędu i debugowanie. Poza tym czy to na prawdę problem napisać dla każdej zmiennej:
? :) |
||
|
|
|
2
|
dobra dobra ... mamy formularz : zwraca nam tablice array('imie'=>'Maciej','firma'=>'ajtis.pl') teraz kawalek kodu ...
Wynik : nie masz uprawnień Maciej. dobra a teraz nasz extract + firebugiem modyfikujemy sobie formularz dodając: < imput type="hidden" name="isAllowedToOpenThisShit" value="1"/>
Wynik : skasowałeś internet !!!! |
|||
|
|
|
1
|
Największą wadą tej funkcji jest to że istnieje, bo tworzenie oraz nadpisywanie zmiennych w niekontrolowany sposób to krótka droga do błędów w działaniu aplikacji lub do dziur bezpieczeństwa. |
||
|
|