log > htmlspecialchars

PHP

htmlspecialcharsという関数があって、これを使おうとすると<?php echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8'); ?>みたいな感じになる。はっきり言って長いので、たいていのフレームワークではh($str);みたいなラッパークラスが実装されている。

私も使ったことあるのだが、生PHPを使ってテンプレートからh関数呼び出して使うみたいなことやったことないな、と思ったので試した。(他からコードを拝借したりして、50分くらいで作ったコードなので汚い。)

https://github.com/deprode/h-sample

セキュリティ対策クラスに静的メソッドを定義しておいて、functions.phpでh関数を定義し、テンプレート内で使用している。テンプレートはSmarty - PHPテンプレートエンジンを10行で自作する - Qiitaを参考にした。

最初はnamespaceなしでやったらすぐできたのだが、namespaceつけたらダメでなんでかな、と思ったらautoloadがnamespaceに対応してないだけだった。(というか、autoloadは自作せずにライブラリ使うべしだった。)

まあ、とりあえずhtmlspecialcharsをh関数にしてテンプレート内で使用することはできたけど、普通ならテンプレート展開時に自動でescape処理されるので、あんまり意味なかったかもしれない。