Czy stosujesz tag zamykający w PHP?

php-logoCoraz więcej mam do czynienia z cudzym kodem napisanym w PHP. Zauważyłem, że w wielu miejscach, nie wiem czy przez przypadek czy umyślnie, są tagi zamykające: ?> chociaż być nie powinny.

Tag zamykający powinniśmy używać wyłącznie w sytuacji, gdy poza PHP spodziewamy się czegoś innego, np. są to pliki widoku, w którym zagnieżdżamy wywołania, np.:

Dlaczego? Powód jest jeden: błędy. Za tagiem zamykającym może zakraść nam się spacja, znak nowej linii lub inne białe znaki. A to automatycznie powoduje błąd Cannot modify header information – headers already sent, jeśli w kolejnych plikach operujemy na nagłówku strony (header(), setcookie()).

Gdy nasz projekt jest duży, a ktoś zostawi ?> ze spacją lub innym cudem możemy mieć spory problem w szukaniu błędu i stracić sporo czasu. Poza tym interpreter nie musi zastanawiać się co i jak, gdzie kod PHP się zaczyna, a gdzie kończy.

Dlatego dla wszystkich plików, które zawierają tylko PHP zalecam niestosowanie tagu zamykającego ?>, który przez PHP jest niewymagany.

Polecam Wam również zaznajomienie się z Zend Framework Coding Standard.