PHP超入門 (36)
先ずは、今回はお詫びと追加訂正です。
■お詫び&追加訂正
前回、空のテキストファイルに文章を書き込んだり、既にある内容を上書きす
る次のようなプログラムをご紹介いたしました。
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\090-1.txt","r+");
fwrite($file,"あなたの実年齢は25歳です。")
?>
----------------------------------------------------------
実は、このプログラムは動くことは動くのですが、大切な最後の一行が抜けて
いました。
正しくは、次のようになります。
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\090-1.txt","r+");
fwrite($file,"あなたの実年齢は25歳です。")
fclose($file);
?>
----------------------------------------------------------
そう、最後の「fclose(ファイルクローズ)」関数で、一行目で開いた文書を
閉じる操作が抜けていたのです。
前回の場合、何事も無く動きましたが、少し複雑なプログラムを作ろうとした
場合、思わぬエラーを起こすことが考えられますので、「fopen(ファイルオ
ープン)」関数でファイルを開けた場合は、最後に必ず、fclose関数で、開い
たファイルを閉じることを忘れないようにしてください。
イメージとしては、ワードやエクセルでファイルを開いた後、使い終わったら
そのファイルは閉じておく、ということと同じような感じです。
なお、このファイルを扱うお話で、最初に出てきたプログラム
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\088-1.txt","r");
fpassthru($file);
?>
----------------------------------------------------------
の「fpassthru(ファイルパススルー)」関数の場合は、この関数の動作が終
わった後、開いたファイルを閉じる作業を自動的に実行してくれるので、fclo
se関数を書く必要はありません。
■ファイルを自動的に作ってくれる引数「w」
今まで紹介してきたプログラムで
$file = fopen("C:\\inetpub\\wwwroot\\php\\090-1.txt","r+");
の部分の引数にあたる「r+」や「r」の場合、基となるテキスト文書(この場
合は「090-1.txt」)が最初から存在してくれないとエラーとなってしまいます。
ですから、何かテキストファイルに書き込もうと思ったら、そのファイルを手
作業で予め準備しておかなければなりません。
考えようによってはめんどくさいですね。
そのようなめんどくさがり屋さんのために、便利な引数があります。
それが「w」あるいは「w+」です。
話だけではナンなので、まずは実例から。。。
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\091-1.txt","w");
fwrite($file,"あなたの脳年齢は52歳です。");
fclose($file);
?>
----------------------------------------------------------
このPHPプログラムを「091-1.php」の名前で、「C:\inetpub\wwwroot\php」フ
ォルダに保存します。
そして、ブラウザのアドレス欄に「http://localhost/php/091-1.php」と入力
してください。
そうすると、画面上では何も変化が現れませんが、
「C:\inetpub\wwwroot\php」フォルダをエクスプローラで見てみてください。
PHPプログラム実行前には無かった「091-1.txt」というファイルができていま
す。
さらに、メモ帳を使って、「091-1.txt」の中身を見てみると、ちゃんとPHPプ
ログラム中に記述してある文章が書き込まれています。
ウ〜ン、これはなかなか便利な引数だと思いませんか?。
次に、以下のようPHPプログラムを作成してみます。
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\091-1.txt","w");
fwrite($file,"私の実年齢は25歳です。");
fclose($file);
?>
----------------------------------------------------------
このPHPプログラムを「091-2.php」の名前で、「C:\inetpub\wwwroot\php」フ
ォルダに保存します。
そして、ブラウザのアドレス欄に「http://localhost/php/091-1.php」と入力
してください。
そうすると、これも、上と同様、画面上では何も変化が現れませんが、
同じフォルダにある、「091-1.txt」の中身を見てみると、「091-2.php」の中
で記述する文書に置き換わっています。
すなわち、引数「w」を用いて、異なる文書をテキストファイルに書き込むと、
もとの文書に上書きされて保存されてしまいます。
これは、前回お話した引数「r+」と同じ働きをします。
でも、やはり、書き込む文書ファイルを予め用意していなくても良いのが、何
といっても便利です。
■読み込みもできる引数「w+」
今までお話してきた、プログラムで使用してきた引数「w」は書き込み専用で
したが、それに読み込みもできる機能をつけたのが、引数「w+」です。
正直言いますと、イロイロ手を尽くして探してもみたのですが、あまり良い例
が見つからず、この程度の説明でご容赦ください。
もし、何かプログラム中で使用する場合には、機能の広い「w+」の方が無難で
はないかと思います。