PHPの終了タグ (“?>”) っていらないんだ

知りませんでした。phpspot開発日誌経由でZend Frameworkの標準コーディング規約の「最初に」書いてあるのを見て初めて知りました。

PHP コードのみからなるファイルでは、終了タグ (“?>”) は決して含めてはいけません。終了タグは、PHP には必要ありません。 終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。

確かにその通り。PHPをLinuxでもWindowsでもCLIとして使うことが多い自分としては目からウロコ。

追記:
記事のタイトルにダブルクォーテーションがあると下のCommentへのリンクがおかしくなることに気付いた。

<a href="http://blog.zu~" title="Comment on PHPの終了タグ ("?>") っていらないんだ">

これは報告せねば、と思ったら既知。1月の報告でpriorityがlowになってますけど。。

#2358 (Transform HTML Special Chars in comment-functions.php:comments_popup_link()) – WordPress Trac – Trac

このページに辿り着くまでには、上のHTMLソース近辺のキーワードになりそうな単語でWordPressのソース全体をgrep検索して(実際にはロリポサーバでgrepできないので、別のLinux上にソースを展開…。p要素のクラスに指定されていたpostmetadataで引っかかった。)自分で作ったthemeファイルが出てきたので、あれ自分のバグ?と思って見たら該当箇所は以下。

<?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?>

関数名がわかったので再びcomments_popup_linkでgrep。wp-includes/comment-functions.phpの331行目に問題の箇所を発見し安直にhtmlspecialcharsでくくって解決。上のバグ報告も同じ解決方法をとっているのでOKっぽい。

echo ' title="' . sprintf( __('Comment on %s'), htmlspecialchars($post->post_title) ) .'">';

WordPress本家にBUG Reportのページが見当たらないのでSUPPORTで先ほどのcomments_popup_linkを検索したらBug Databaseというチェックボックスがあったのでそちらで再度検索してようやく先ほどのページがお目見え。

しかし、ログインしないと投稿できないのは仕方ないとはいえ、バグあったよーこれで解決すると思うよーというお気軽な報告ができず残念。

This entry was posted in いじる. Bookmark the permalink. Both comments and trackbacks are currently closed.

Page optimized by WP Minify WordPress Plugin