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

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

作成日: 更新日:

基本的な使い方

setFileClassメソッドは、FilesystemIteratorがディレクトリ内の要素(ファイルやサブディレクトリ)を反復処理する際に、それらの要素を表すオブジェクトのクラスを指定するメソッドです。FilesystemIteratorは、通常、反復処理を行う際に各要素を標準のSplFileInfoオブジェクトとして提供します。しかし、このsetFileClassメソッドを利用することで、ユーザーが独自に定義したクラスのオブジェクトを、各要素の表現として使用することが可能になります。

SplFileInfoを継承したカスタムクラスを用いることで、ファイルやディレクトリに関する独自のビジネスロジックや追加情報をメソッドやプロパティとして持たせることができます。これにより、ファイル操作のコードをより整理し、再利用性を高め、特定のファイルタイプに応じた固有の処理をオブジェクト自体に内包させるといった柔軟な設計が可能となります。

このメソッドは、使用したいカスタムクラスの完全修飾名を文字列として引数に受け取ります。指定するクラスは、必ずSplFileInfoクラスまたはその子クラスを継承している必要があります。この制約を満たさないクラスを指定した場合、実行時に型に関するエラーが発生する可能性がありますので注意が必要です。setFileClassメソッドは、設定を行ったFilesystemIterator自身のインスタンスを返します。このため、他の設定メソッドと組み合わせてメソッドチェーンとして利用することも可能です。

構文(syntax)

1<?php
2
3// FilesystemIterator が返すファイルのクラスを指定するためのカスタムクラスを定義します。
4// このクラスは SplFileInfo を継承する必要があります。
5class CustomFileInfo extends SplFileInfo {}
6
7// FilesystemIterator のインスタンスを作成します。
8// ここではカレントディレクトリを仮のパスとして使用します。
9$iterator = new FilesystemIterator(__DIR__);
10
11// setFileClass メソッドを呼び出し、イテレータが返すオブジェクトのクラスを設定します。
12// 引数にはクラス名を文字列で渡します。
13$iterator->setFileClass('CustomFileInfo');
14
15?>

引数(parameters)

string $class = FilesystemIterator::class

  • string $class = FilesystemIterator::class: ファイルのクラス名を指定する文字列。デフォルトは FilesystemIterator::class

戻り値(return)

FilesystemIterator

このメソッドは、FilesystemIterator オブジェクト自体を返します。これにより、メソッドチェーン(複数のメソッドを連続して呼び出すこと)が可能になります。

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