SplFileInfo类的作用在于为文件或者目录的属性提供面向对象的访问功能,其典型应用是获取文件或者文件夹的信息。
SplFileInfo类提供了两个关键的方法以支持对它的扩展:
1. setInfoClass:这个函数默认指向SplFileInfo类,如果扩展了SplFileInfo类,应该将这个值设置为扩展类的名称。
2. setFileClass:这个函数默认执行一个SplFileObject类,如果扩展了这个类,应该设置这个值以确保扩展类正式调用SplFileInfo类的代码提供的类。
这两个方法对getFileInfo()、getPathInfo()和openFile()等方法的操作会产生影响。
DirectoryIterator迭代器和SplFileObject类都是从SplFileInfo类继承的,getFileInfo()方法提供了在迭代器中访问某个特定文件的信息的办法,还可以将一个文件对象转换为一个文件信息对象。openFile()方法将访问文件并返回一个SplFileInfo对象,这个对象可以被用来在文件中执行操作。
DirectoryIterator迭代器提供了访问某个目录内容列表的功能,它的current()方法会为目录中的当前项返回一个SplFileInfo对象。
使用SplFileInfo对象和DirectoryIterator迭代器示例:
RecursiveDirectoryIterator迭代器提供了递归式迭代访问功能,以及确定某个路径是否含有子目录的方法。
使用RecursiveDirectoryIterator迭代器范例:
创建自定义文件过滤器:只需要创建从FilterIterator迭代器继承并且实现accept()方法就可以了。
查找特定类型文件的范例代码:
SplFileObject类将PHP文件中的I/O函数综合在一起如fopen()、fread()等函数,形成了一个多功能的面向对象的接口。可以使用这个类以面向对象的方法来读取和操作文件数据。
SplFileObject也是一个迭代器,并且还是可查找的,这允许通过foreach循环来使用文件的内容。
以行为单位的迭代访问代码范例:
CSV解释操作代码范例:
结合SPL的示例代码,使用SPL的文件和目录特性,还可以实现查找文件、文件内容的搜索等功能。