Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】SplTempFileObject::getMTime()メソッドの使い方

getMTimeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

getMTimeメソッドは、SplTempFileObjectクラスに属し、このオブジェクトが操作しているファイル(一時ファイル)の最終更新時刻を取得するメソッドです。

このメソッドは、ファイルが最後に変更された日時をUNIXタイムスタンプ形式で返します。UNIXタイムスタンプとは、1970年1月1日00:00:00 UTC(協定世界時)からの経過秒数を表す整数の値です。取得したタイムスタンプは、PHPのdate()関数などと組み合わせることで、年月日時間といった人間が読みやすい形式に変換して利用することができます。

SplTempFileObjectはメモリ上や一時ファイルとしてデータを扱うためのクラスですが、このgetMTimeメソッドを使用することで、その一時ファイルがいつ作成されたか、あるいは最後にデータが書き込まれたかといった情報を得ることが可能になります。例えば、処理の途中で一時ファイルの状態を追跡したり、一時ファイルの鮮度を確認したりする際に役立ちます。

メソッドが正常に最終更新時刻を取得できた場合は、UNIXタイムスタンプが整数で返されます。しかし、何らかの理由で時刻の取得に失敗した場合や、ファイルが存在しないなどのエラーが発生した場合は、ブール値のfalseが返されます。そのため、このメソッドを利用する際には、戻り値がfalseでないことを確認するエラーハンドリングを行うことが推奨されます。この機能は、ファイル操作における時間管理の基本的な手段として重要です。

構文(syntax)

1<?php
2$tempFile = new SplTempFileObject();
3$modificationTime = $tempFile->getMTime();
4?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

SplTempFileObject::getMTimeは、ファイルの最終更新時刻をUNIXタイムスタンプ形式の整数で返します。

サンプルコード

PHP SplTempFileObject::getMTime で最終更新時刻を取得する

1<?php
2
3/**
4 * SplTempFileObject クラスの getMTime メソッドのサンプルコード
5 *
6 * この関数は、SplTempFileObject を使用して一時ファイルにデータを書き込み、
7 * そのファイルの最終更新時刻を getMTime メソッドで取得し、表示します。
8 *
9 * @return void
10 */
11function demonstrateSplTempFileObjectGetMTime(): void
12{
13    // SplTempFileObject のインスタンスを作成します。
14    // 'php://memory' は、一時ファイルを物理ディスクではなくメモリ上で扱うことを指定します。
15    // これにより、ファイル操作が高速になり、ディスクに痕跡を残しません。
16    $tempFile = new SplTempFileObject('php://memory');
17
18    echo "--- SplTempFileObject::getMTime() デモンストレーション ---" . PHP_EOL;
19
20    // 一時ファイルに内容を書き込みます。
21    // この操作によって、ファイルの最終更新時刻 (modification time) が設定または更新されます。
22    $tempFile->fwrite("これは SplTempFileObject を使用して書き込まれた一時データです。\n");
23    $tempFile->fwrite("さらにデータが追加されました。\n");
24
25    echo "一時ファイルにデータを書き込みました。" . PHP_EOL;
26
27    // getMTime() メソッドを呼び出して、ファイルの最終更新時刻を取得します。
28    // 戻り値は、Unixタイムスタンプ(1970年1月1日00:00:00 UTCからの秒数)です。
29    $modificationTimestamp = $tempFile->getMTime();
30
31    echo "取得した最終更新時刻 (Unixタイムスタンプ): " . $modificationTimestamp . PHP_EOL;
32
33    // Unixタイムスタンプを人間が読める形式の日付と時刻に変換して表示します。
34    // date() 関数は、指定されたフォーマット文字列に従ってタイムスタンプを変換します。
35    echo "人間が読める形式の最終更新時刻: " . date('Y-m-d H:i:s', $modificationTimestamp) . PHP_EOL;
36
37    echo "-----------------------------------------------------------" . PHP_EOL;
38
39    // スクリプトの終了時に $tempFile オブジェクトがスコープ外に出ると、
40    // メモリ上のファイルは自動的に解放されます。
41}
42
43// 関数を実行して、getMTime メソッドの動作を確認します。
44demonstrateSplTempFileObjectGetMTime();
45

SplTempFileObject::getMTime メソッドは、PHPで一時ファイルを扱うための SplTempFileObject クラスに属し、その一時ファイルの最終更新時刻を取得するために使用されます。

このメソッドは引数を一切必要としません。呼び出されると、対象となる一時ファイルが最後に変更された日時をUnixタイムスタンプとして整数(int)型で返します。Unixタイムスタンプとは、1970年1月1日00:00:00 UTC(協定世界時)からの経過秒数を表す数値です。この数値は人間には直接読み解きにくいため、通常は date() 関数などと組み合わせて「YYYY-MM-DD HH:MM:SS」といった分かりやすい形式に変換して利用されます。

サンプルコードでは、SplTempFileObject('php://memory') を使ってメモリ上に一時ファイルを作成し、データが書き込まれた後に getMTime() メソッドで最終更新時刻を取得しています。php://memory を使用することで、物理ディスクではなくメモリ上で高速にファイル操作が行われ、スクリプト終了時にファイルが自動的に削除されるため、一時ファイルの管理が容易になります。このメソッドにより、ファイルの鮮度や更新履歴をプログラムで確認することが可能です。

SplTempFileObject::getMTimeメソッドは、一時ファイルの最終更新時刻をUnixタイムスタンプという数値で返します。この数値は人間には読みづらいため、サンプルコードのようにdate()関数などを使用して「YYYY-MM-DD HH:MM:SS」といった形式に変換してから表示・利用することが重要です。

また、SplTempFileObjectphp://memoryと組み合わせて使うと、ファイルは物理ディスクではなくメモリ上に作成されます。これにより、高速なアクセスが可能になり、スクリプト終了時やオブジェクトがスコープ外に出た際に自動的にファイルが解放されるため、手動でファイルを閉じる、または削除する処理は不要となります。ファイルの内容を書き込む(fwrite)ことで、この最終更新時刻が更新される点を理解しておきましょう。

関連コンテンツ