PHPのhtmlspecialcharsで関数側のチェックを厳しくしろ、という話それほどわからないなぁ(殆ど読んでないけど)
文字列とバイト配列は別であるべきで、文字列の符号化方式として許されるのは一つに絞っておくべきだ、と感じてしまう。
class String{
}
function htmlspecialchars($x){
if (!($x instanceof "String")){
throw new Exception();
}
/*文字列に対する処理*/
}
という感じで特定のクラス以外を受け入れないようにしておく。
(で、厳密静的型付き言語はnullを除き、こういう風に記述を複雑にしなくても自動でやってくれているわけだ。)
#バイト配列を指定された文字符号化方式で解釈して文字列にし、問題があれば例外を返すのは.NET FrameworkでいうSystem.Text.EncodingクラスやStringクラスの仕事。
各関数が行うことは与えられた引数がString型であるかチェックすることであって、符号化方式によって場合分けをするようなことはしない。
…でいいと思うんだけどなあ
=============
自分の意見に近いと思うのが
http://d.hatena.ne.jp/ikepyon/20090911
文字列とバイト配列は別であるべきで、文字列の符号化方式として許されるのは一つに絞っておくべきだ、と感じてしまう。
class String{
}
function htmlspecialchars($x){
if (!($x instanceof "String")){
throw new Exception();
}
/*文字列に対する処理*/
}
という感じで特定のクラス以外を受け入れないようにしておく。
(で、厳密静的型付き言語はnullを除き、こういう風に記述を複雑にしなくても自動でやってくれているわけだ。)
#バイト配列を指定された文字符号化方式で解釈して文字列にし、問題があれば例外を返すのは.NET FrameworkでいうSystem.Text.EncodingクラスやStringクラスの仕事。
各関数が行うことは与えられた引数がString型であるかチェックすることであって、符号化方式によって場合分けをするようなことはしない。
…でいいと思うんだけどなあ
=============
自分の意見に近いと思うのが
http://d.hatena.ne.jp/ikepyon/20090911