関数の概要
PHPの touch 関数は、指定したファイルのアクセス時間(atime)と修正時間(mtime)を変更するための関数です。新しいファイルを作成することも可能で、主にファイルのタイムスタンプを更新するときに使用します。
パラメータの説明
filename(必須):更新したいファイルのパスを文字列で指定します。ファイルが存在しない場合は新たに作成されます。time(任意):タイムスタンプに設定するPHPのUNIXタイムスタンプ値。指定しない場合は現在の時刻になります。atime(任意):アクセス時間に設定するUNIXタイムスタンプ値。指定しない場合はtimeと同じ値が使われます。
戻り値
成功した場合は true を返し、失敗した場合は false を返します。ファイルが書き込み可能でない場合や、指定したパスに問題があると失敗します。
使用例
基本的な使い方
<?php
// ファイルのタイムスタンプを現在時刻に更新
touch('example.txt');
?>
この例では、存在するファイルのタイムスタンプを現在の時刻に更新します。ファイルが存在しない場合は空のファイルが新規作成されます。
指定した日時にタイムスタンプを更新する
<?php
// 2023年1月1日00:00:00のタイムスタンプに変更
$timestamp = strtotime('2023-01-01 00:00:00');
touch('example.txt', $timestamp);
?>
日時を指定してファイルの修正時間を変更する場合は、UNIXタイムスタンプを用いて touch に渡します。
アクセス時間と修正時間を別々に設定する
<?php
$mtime = strtotime('2024-01-01 12:00:00');
$atime = strtotime('2024-01-01 14:00:00');
touch('example.txt', $mtime, $atime);
?>
この例では、修正時間(mtime)とアクセス時間(atime)を個別に指定しています。同じタイムスタンプを使わない場合に便利です。
関連する関数
filemtime:ファイルの最終修正時刻を取得するfileatime:ファイルの最終アクセス時刻を取得するtouch:ファイルのタイムスタンプを変更する(本記事の関数)copy:ファイルをコピーするunlink:ファイルを削除する
まとめ
touch 関数は、PHPでファイルの更新日時やアクセス日時を簡単に設定・変更できる便利な関数です。ファイルが存在しない場合は新規作成も可能なので、ファイルの存在確認とともに日付情報の操作が必要なシーンで幅広く使われています。タイムスタンプを細かくコントロールしたい場合は、3番目の引数を活用することもポイントです。
