【PHP8.x】setInfoClassメソッドの使い方

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

作成日: 更新日:

基本的な使い方

setInfoClassメソッドは、FilesystemIteratorがファイルシステム内の項目(ファイルやディレクトリ)を反復処理する際に、それらの情報を提供するオブジェクトのクラスを指定するメソッドです。

通常、FilesystemIteratorは各項目に対して、標準のSplFileInfoクラスのインスタンスを生成し、その情報を提供します。しかし、このsetInfoClassメソッドを利用することで、開発者が独自に定義したカスタムクラスのインスタンスを生成し、ファイル情報として利用するように設定できます。

指定するカスタムクラスは、必ずSplFileInfoクラスを継承している必要があります。これにより、SplFileInfoが持つ基本的なファイル情報の取得機能(ファイル名、サイズ、更新日時など)はそのままに、独自のメソッドや追加のプロパティを組み込んだファイル情報オブジェクトを作成できるようになります。

この機能は、ファイルシステムを走査する際に、単なるファイル情報だけでなく、そのファイルに特化した独自の処理やビジネスロジックをファイル情報オブジェクト自体に持たせたい場合に非常に有効です。例えば、特定の拡張子のファイルに対して自動で内容を解析するメソッドを、ファイル情報オブジェクトに持たせるなどが考えられます。

setInfoClassメソッドを用いることで、ファイルシステムからの情報取得をより柔軟にカスタマイズし、アプリケーションの要件に合わせたオブジェクト指向的なアプローチで処理を記述することが可能になります。これにより、コードの可読性やメンテナンス性を向上させることができます。

構文(syntax)

1<?php
2
3// FilesystemIteratorが返すファイル情報オブジェクトの型を指定するためのカスタムクラスを定義します。
4// SplFileInfoを継承するのが一般的です。
5class CustomFileInfo extends SplFileInfo
6{
7    // 必要であれば、ここに独自のメソッドやプロパティを追加できます。
8}
9
10// FilesystemIteratorのインスタンスを作成します。
11// 例として、カレントディレクトリを表す'.'を指定しています。
12$iterator = new FilesystemIterator('.');
13
14// setInfoClassメソッドを使用して、イテレータがファイルを処理する際に使用する
15// ファイル情報オブジェクトのクラスを指定します。
16// ここでは上で定義したCustomFileInfoクラスを使用するように設定しています。
17$iterator->setInfoClass(CustomFileInfo::class);

引数(parameters)

?string $className = null

  • ?string $className: ファイル情報のクラス名。省略可能で、nullの場合はデフォルトのSplFileInfoクラスが使用されます。

戻り値(return)

FilesystemIterator

このメソッドは、ファイル情報の取得に使用するクラスを設定し、設定されたFilesystemIteratorオブジェクト自身を返します。

【PHP8.x】setInfoClassメソッドの使い方 | いっしー@Webエンジニア