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

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

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

作成日: 更新日:

基本的な使い方

setInfoClassメソッドは、RecursiveDirectoryIteratorが、ディレクトリ内の各ファイルやディレクトリの情報をどのようなオブジェクトとして提供するかを設定するメソッドです。

RecursiveDirectoryIteratorは、指定されたディレクトリとその配下のサブディレクトリを再帰的に探索し、ファイルやディレクトリを順に処理するための機能を提供します。通常、このイテレータが各要素の情報として返すのは、PHPに標準で備わっているSplFileInfoクラスのオブジェクトです。

しかし、開発者がファイルやディレクトリに関する標準情報に加えて、独自の処理や追加のプロパティを組み込みたい場合があります。そのような場合、SplFileInfoを継承した独自の情報クラス(カスタムクラス)を作成できます。setInfoClassメソッドを使うことで、このカスタムクラスをRecursiveDirectoryIteratorに設定し、イテレータが返す情報オブジェクトが、標準のSplFileInfoではなく、開発者が定義したカスタムクラスのインスタンスとして返されるように変更できます。これにより、例えば、ファイルの種類に応じた専用の操作メソッドを追加したり、特定の情報を事前に整形しておくなど、より柔軟で高度なファイルシステム操作を実現できます。

構文(syntax)

1<?php
2
3// SplFileInfo を継承したカスタムクラスを定義します。
4// RecursiveDirectoryIterator はこのクラスのインスタンスをファイル情報として返します。
5class MyFileInfo extends SplFileInfo {}
6
7// RecursiveDirectoryIterator のインスタンスを作成します。
8// ここでは例として '/path/to/directory' を指定していますが、実際のディレクトリパスに置き換えてください。
9$iterator = new RecursiveDirectoryIterator('/path/to/directory');
10
11// setInfoClass メソッドを使って、イテレータが使用するファイル情報クラスを
12// 定義した MyFileInfo クラスに変更します。
13// MyFileInfo::class は PHP 5.5 以降で推奨される、クラス名を文字列として取得する方法です。
14$iterator->setInfoClass(MyFileInfo::class);

引数(parameters)

string $class = RecursiveDirectoryIterator::class

  • string $class = RecursiveDirectoryIterator::class: ファイル情報を保持するクラス名を指定する文字列。デフォルトでは RecursiveDirectoryIterator::class が使用される。

戻り値(return)

戻り値なし

戻り値はありません