arketブログ

arket(アルケット)のblogです。 色々作ります。

readdir関数の返り値チェックは型も調べる比較演算子で

春ですね、今期のアニメは観る本数が多くて録画後の管理が大変です。
TIGER&BUNNYが想像以上に面白い。後、日常のOP凄いですね。
あ、アマガミも未だに七咲とキッスができないでいます。ハァー・・・



たまにはコードでも読もうと思って、PHPで軽めのオープンソースCMSを漁っていたら、
readdir関数で初歩いけど、つい意識しなさそうで気になった箇所があったのでメモ程度に。


readdir関数
readdir ― ディレクトリハンドルからエントリを読み込む


そこでは

$handle = @opendir('./irohadir');
while($file = readdir($handle)){
    //処理
}

ってな感じでreaddirを使っていました。


これでも別に動くんですが、readdirでチェックしているディレクトリ配下に"0"なんて名前のファイルが
あったらそこでFALSEと判定されてループが終わっちゃいますね。
というわけでマニュアルでも書かれていますが、判定はちゃんと型も調べる比較演算子を使おうと。
上のを書き直すと

$handle = @opendir('./irohadir');
while(false !== ($file = readdir($handle))){
    //処理
}

こんな感じで。


自動的にファイルが生成されないディレクトリや
ユーザーがファイル名をそのまま保管できるディレクトリ(あぶねぇ!)などじゃないと
問題は起きないとは思いますが、分かっていたほうがいいですよね。



では、七咲が呼んでいるので失礼します・・・