はじめに
PHP8技術者認定上級試験の問題集に登場するコードを題材に、hash_file()
関数やマジック定数 __FILE__
/ __DIR__
の挙動を整理します。試験で間違いやすいポイントを押さえて、効率よく理解していきましょう。
目次
問題に出てきたコード
<?php
declare(strict_types=1);
error_reporting(-1);
var_dump(hash_file('sha256', __FILE__ ));
コードの解説
declare(strict_types=1);
→ 型の厳密モードをONerror_reporting(-1);
→ すべてのエラーを表示hash_file('sha256', __FILE__)
→ このファイルの中身を SHA-256 でハッシュ化
出力例:
string(64) "a3c1e4f0b54e0ffcd1c2f0476a5c59c38b89f9c61b7b9d3e4d5d14cb7d39c3a4"
hash() と hash_file() の違い
hash()
→ 文字列を直接ハッシュ化hash_file()
→ ファイルの中身をハッシュ化
__FILE__ と __DIR__ の違い
__FILE__
→ ファイルのフルパス(例:/var/www/html/test.php
)__DIR__
→ ディレクトリのフルパス(例:/var/www/html
)
basename() を使った例
echo basename(__FILE__); // test.php
echo basename(__DIR__); // html
まとめ
hash_file()
はファイル全体をハッシュ化する関数__FILE__
は「ファイル名まで含む絶対パス」__DIR__
は「ディレクトリの絶対パス」basename()
を組み合わせると、ファイル名やディレクトリ名だけを抜き出せる