substrがfalseを返すとき
先日PHPUnit関係で、バグに関して見てくれとのことでメールがありました。
Selenium関係のところで動作がおかしいとのことでしたので、以下のtracに登場してみました。
InvalidArgumentException when running Selenium test
なるほど。問題はsubstrがfalseを返すときに起こるものですね。てっきりstringしか返さないものだと思ったら、
string substr ( string $string , int $start [, int $length ] )
確かにこう書いてあります。
length が指定され、かつ正である場合、 返される文字列は start (string の長さに依存します) から数えてlength 文字数分となります。 もし string が start の文字列長より小さいもしくは等しい場合、FALSE が返されます。
より小さい場合はわかるけど、$stringと同じ長さのときもfalseを返してくれるのがなんとも。そして、このバグは、その同じ長さのときに空文字列ではなく、falseを返すので、InvalidArgumentExceptionを投げてしまうというものでした。マニュアルをちゃんと読まないとダメでしたね。勉強になりました。そしてこれからは関数を使う以上、ちゃんと理解してから使った方がいいと思いました。
そして、今日は日比谷図書館。でも、雰囲気は千代田図書館の方がいいですね。キレイやし、夜10時までやってるのもポイント高いです。近くにSUBWAYがあるのもいいですね。明日からは千代田図書館に戻ります。
Shin Ohno 2003-2012