2010-07-27 15 views
9

Powiel możliwe:
why in some scripts they omit the closing php tag ?>Niepotrzebny znacznik zamykający PHP?

Jak wyjaśniono w Code Igniter style guide, wydaje się, że PHP znaczniki zamykające są opcjonalne. Mówi się nawet, że powinieneś tego unikać z kilku powodów.

Ktoś miałby więcej informacji na temat tego problemu?

Dzięki!

+10

możliwy duplikat [dlaczego w niektórych skryptach pominięto zamykający tag php?>] (Http://stackoverflow.com/questions/3219383/why-in-some-scripts-they-omit-the-closing-php -tag) - czy rzeczywiście zauważasz, że SO sugeruje pytania, kiedy wchodzisz do swojego? Czy wy [szukacie w ogóle] (http://stackoverflow.com/search?q=closing+tags+php)? – Gordon

+0

także: http://stackoverflow.com/questions/1656744/when-not-to-close-a-php-file/1656752#1656752 – karim79

+0

SO sugeruje, że nie proponował mi świetnych odpowiedzi, przepraszam –

Odpowiedz

12

Jednym z powodów, dla których ludzie unikają zamykania znacznika?>, Jest uniknięcie "nagłówka już wysłanego błędu" z powodu łamania linii lub innych niewidocznych znaków po znaczniku?>.

+0

To jest przyczyna NetBeans daje FWIW. – pbhj

3

Jest całkowicie poprawny, aby pominąć tag zamykający. Jednym z powodów takiego postępowania jest uniknięcie niechcianych białych znaków, które mogłyby kolidować z nagłówkami.

1

Unikał wysyłania nagłówków w dołączonych plikach. Na przykład, jeśli dołączony plik zawiera znacznik zamykający PHP i znak przestrzeni na nim lub nową linię, ten plik wysyła nagłówki i nie można w przyszłości zmienić informacji nagłówka.

0

Zwykle używam znaczników zamykających, ale słyszałem o tym stylu kodu, gdy używam Code Igniter. Domyślam się, że pomijając znacznik zamykający, unikasz możliwych problemów ze znakami "białych znaków", które mogą przerwać sesje, co może spowodować błąd "nagłówki już wysłane".

1

z podręcznika (http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php):

Uwaga: Znacznik zamykający bloku PHP na końcu pliku jest opcjonalny i w niektórych przypadkach pomijając warto przy użyciu include () lub require(), więc niechciane spacje nie pojawią się na na końcu plików, a ty nadal będziesz w stanie dodać nagłówki do odpowiedzi później. Jest także przydatny, jeśli korzystasz z buforowania wyjściowego i nie chcesz, aby wyświetlał niechciane spacje pod numerem na końcu części generowanych przez dołączone pliki .

5

Nie ma zbyt wiele do powiedzenia na ten temat.

plik PHP kończy tak:

<php 
//code 
?> 

będzie faktycznie PHP wysłać nagłówki do klienta, z powodu spacji po tagu zamykającego ?>, co można sprawdzić, czy podświetlić blok kodu. Białe spacje lub łamanie linii na końcu plików może być łatwe do przeoczenia i trudne do wyśledzenia.

Po wysłaniu nagłówków niemożliwe jest wykonanie takich czynności, jak zmiana linii statusu lub typu zawartości.

Ponieważ znacznik zamykający jest domyślny na końcu pliku, można po prostu pominąć znacznik zamykający dla plików tylko z kodem PHP. Jeśli to zrobisz, wszelkie spacje będą traktowane jako białe spacje w kodzie, a nie białe spacje i zostaną zignorowane.

Powiązane problemy