なんか、これが染み付いていて他の言語でコーディングする時も、同じノリで、最終行に改行コードを入れてしまうのですが、PHPの場合これが仇になるのですよね。
?>の後ろに改行を入れてしまっていると、
Warning: Cannot modify header information - headers already sent by (output started at XXXXXXXXXX.class.php:50) in XXXXXXXXXXXXXX.class.php on line 27
なんて、ことになる場合もあります。他のクラスファイルをインクルードした時に発生する可能性があるのですが、?>の後にある空行がレスポンスヘッダとしてブラウザに送信されてしまうためのようです。
良かったらクリックお願いします→

私もPHPをよく使うんですが、"?>"の後に改行するとエラーになるなんて初めて知りました。
先ほど自分の環境でも試しにやってみましたが、エラーにはならなかったみたいです。
もしかするとphp.iniの中のerror_reportingで何かあるのかも・・・。
ちなみに私は環境では下のようになっていました。
error_reporting = E_ALL & ~E_NOTICE
もしかするとPHP 4と5の違いかな??
コメントありがとうございますm(_ _)m
この現象は、多分フレームワークを使っていないと起こらないのかと。
私がこの現象に出くわしたのは、「Maple」(+PHP5)というフレームワークを使って開発していた時なのですが、
この後色々と調べている内に、「Zend Framework」のドキュメントに↓のように答えらしきものがありました。
「付録 B. Zend Framework PHP 標準コーディング規約」
http://framework.zend.com/manual/ja/coding-standard.php-file-formatting.html
=========
PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。これは必須なものではなく、 終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。
=========
「Zend Framework Programmer's Reference Guide:44.4.2. Error: Headers Already Sent」
http://framework.zend.com/manual/ja/zend.session.global_session_management.html#zend.session.global_session_management.headers_sent
=========
PHP のソースファイルの最後でこのエラーが発生するのなら、 終了タグ "?>" を削除しましょう。 これは不要です。また、終了タグの後に改行などの目に見えない文字があった場合、 それが出力としてクライアントに送信されてしまいます。
=========
PHPの終了タグ「?>」以降に改行があるとエラーになりますが、これは結構はまります。
ひっかかるのはheader関数やsession_start関数でWARNINGですね。
「?>」以降に改行のあるファイルを読み込んでheader関数をたたくと・・・。
原因になる箇所を調べようとしてもこの知識がないとコードしか探さないので、すごくみつかりにくいことになります。
ただ、「?>」がないと違和感があるというプログラマが結構いて統一が難しいです。
自分は省略の癖がつき始めてしまいました。
このあたりの情報はできればどんどん広めたいですね
こういう落とし穴的なもので、開発者の時間が浪費されないように、こういった情報は積極的に広げたいと、私も思いますね。