topic: file-io (read / write / CSV / paths / upload概念) / ch03 — ファイルに書く / 演習 01
📝 ドリル 01 — 一時ファイルに書いて読み返す
問題
OS の一時ディレクトリに一時ファイルを作って "Hello, File!\n" を書き込み、その中身を読み返して標準出力に出してください。最後にその一時ファイルを unlink で消してください。
期待される出力:
Hello, File!
採点
php scripts/grade.php topics/14-file-io/ch03-write-file/drill/01-write-and-read/
ヒント
$tmp = tempnam(sys_get_temp_dir(), 'dojo_io_');
file_put_contents($tmp, "Hello, File!\n");
echo file_get_contents($tmp);
unlink($tmp);tempnam($dir, $prefix):$dir配下に被らないファイル名を作り、空ファイルを置いてパスを返すsys_get_temp_dir(): OS の一時ディレクトリパス (Mac/Linux なら/tmp)unlink($path): ファイルを削除する
なぜ一時ディレクトリに書くのか
- リポジトリ内 (
__DIR__配下) に書くと、採点を回すたびにリポジトリが汚れる sys_get_temp_dir()配下 +unlinkで消す = 「実行後は何も残らない」 が L14 の作法
つまづいたら
Hello, File!の後に空行が 1 つ余計に出る →echo file_get_contents($tmp) . "\n";のように追加で改行を足していないかunlinkでWarningが出る →tempnamの戻り値 (フルパス) を渡しているか。nullや空文字を渡していないか
テストケース
期待される出力
Hello, File!
📄 starter.php(雛形)
このコードから書き始めてください。
<?php
// TODO: tempnam(sys_get_temp_dir(), 'dojo_io_') で一時ファイルパスを得る
// $tmp = tempnam(...);
// TODO: file_put_contents で "Hello, File!\n" を書く
// TODO: file_get_contents で読み返して echo する
// TODO: unlink($tmp) で一時ファイルを削除する (CI を汚さない)
✅ 解答例を見る(自分で解いてから)
<?php
// 一時ファイルに書く → 読み返して出力 → 削除する
$tmp = tempnam(sys_get_temp_dir(), 'dojo_io_');
file_put_contents($tmp, "Hello, File!\n");
echo file_get_contents($tmp);
unlink($tmp);