Aug 14

Uważaj na include i include_once!

Tag: PHP, Programowanieradmen @ 01:55

Funkcja include() przydaje się w wielu sytuacjach. Jest też parę sztuczek i kruczków z tym związanych (o których mowa w manualu PHP).

Mój skrypt dzielił się na kilka akcji, odpalanych w jednej instancji po kolei. Pierwsza akcja wrzucała parę rekordów do bazy, a potem zapisywała ich ID do tablicy. Ta tablica natomiast była eksportowana do pliku w formacie:

Kolejna akcja wczytywała tą tablicę (za pomocą polecenia $arr = include(’data.php’);), dokonywała na niej modyfikacji i ponownie zapisywała w podobny sposób, do tego samego pliku.

Po uprzednim przygotowaniu danych (przez akcje I i II), akcja III ponownie ładowała ten plik. Tutaj niestety był błąd, bo użyłem include_once() zamiast include(). Efekt tego był taki, że include_once() nie zwrócił tej tablicy, a jedynie przekazał wartość logiczną TRUE.

Sprawiło mi to niemały problem, ponieważ akcja III się wysypała, z powodu złych danych w zmiennej, a debugowanie było dość uciążliwe (ciężko było znaleźć błąd). Oczywiście łatwo domyślić się dlaczego tak się stalo. Z tego też powodu uczulam na użycie funkcji include_once w kontekście zwracania zmiennych. Zamiast tego należy użyć include().

Jak wspomniałem, takie zachowanie wynika ze specyfikacji działania funckji include_once(). Wpis ku pamięci.

One Response to “Uważaj na include i include_once!”

  1. Mit says:

    Taaa, przerabiane na require_once ;)

Leave a Reply