はじめに
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()を組み合わせると、ファイル名やディレクトリ名だけを抜き出せる
