meesterdev/file-wrapper

文件包装器,可按面向对象的方式使用。

0.0.2 2023-04-22 10:09 UTC

This package is auto-updated.

Last update: 2024-09-22 13:25:29 UTC


README

以面向对象的方式处理文件并执行操作。

用法

示例

<?php

use MeesterDev\FileWrapper\File;

$file = new File();
$file->cd('..');
$file->select('data.json');
$json = $file->readJson();

所有可用公共方法/属性

所有来自SplFileInfo的方法均可用。以下将描述其他方法。

关于文件的一些说明

File类的实例可以指向任何东西:目录、文件、链接,甚至是不存在的东西。

在执行需要这两种类型之一的行为之前,不会区分文件和目录。

属性

string $path

文件当前指向的路径。

构造函数

new File([string $file]);

默认构造函数。您可以使用相对路径和绝对路径。注意,相对路径是从当前工作目录(getcwd())应用。

File::createTemporary(string $directory = sys_get_temp_dir(), string $prefix = '')

在给定的目录中创建一个临时文件。名称将用$prefix前缀。这依赖于PHP功能tmpnam(),它可能或可能不严格遵循给定的参数。无论如何,返回的File$path属性将被设置为创建的文件。

扫描

$file->directoryContents(bool $recursive = false): File[]

扫描并返回文件中包含的所有目录和文件。这仅在文件本身是目录时才有效。

$file->glob(string $search, int $flags = 0): File[]

扫描并返回匹配$search字符串的所有目录和文件。这仅在文件本身是目录时才有效。将$flags直接传递给本地glob()函数。

读取

$file->readLines(int $flags, $context = null): File[]

返回文件中包含的行的数组。这仅在文件上有效。将$flags$context直接传递给本地file()函数。

$file->readToOutput(int $flags, $context = null): File

将文件打印到STDOUT。将$context直接传递给本地readfile()函数。

$file->contents($context = null, int $offset, int $maxLength = null): string

返回文件的全部内容。所有参数都直接传递给file_get_contents()

$file->getMimeType(): string

返回文件的mimetype。

$file->readJson(bool $associative = false, int $depth = 512, int $flags = 0)

将文件解析为JSON并返回解析后的内容。所有参数都传递给本地的json_decode()函数。注意,始终设置了JSON_THROW_ON_ERROR标志。

$file->readCsv(string $separator = ',', string $enclosure = '"', string $escape = '\'): mixed[][]

返回CSV文件的行数组。文件被全部加载。所有参数都传递给本地的fgetcsv()方法。

$file->readIni(bool $processSections, int $mode = INI_SCANNER_NORMAL): array

将文件解析为INI文件并返回结果。参数直接传递给本地的parse_ini_file()函数。

$file->readXml(int $options = 0, bool $dataIsUrl = false, string $namespace = '', bool $isPrefix = false): SimpleXMLElement

从文件内容构造SimpleXMLElement。所有参数直接传递给构造函数

$file->readDomXml(int $xmlFlags = 0, $context = null): DOMDocument

从文件内容构造DOMDocument。将$xmlFlags传递给DOMDocument的loadXML()方法。将$context传递给$filecontents方法。

$file->readDomHtml(int $xmlFlags = 0, $context = null): DOMDocument

与上面相同,但使用DOMDocument的HTML加载方法。

写入

$file->writeLines(string[] $lines, string $newLine = PHP_EOL): File

将行写入文件。

$file->put(string $content, int $flags, $contest): File

将内容写入文件。参数直接传递给file_put_contents()

$file->writeJson($contents, int $depth = 512, int $flags = 0): File

将$contents编码为JSON并写入文件。将$depth$flags直接传递给json_encode()。注意,始终设置了JSON_THROW_ON_ERROR标志。

$file->writeCsv(mixed[][] $rows, string $mode = File::MODE_WRITE, string $separator = ',', string $enclosure = '"', string $escape = '\'): File

将行写入文件作为CSV。$mode是用于写入时打开文件的文件模式。$separator$enclosure$escape传递给fputcsv()方法。

$file->writeXml(SimpleXMLElement $xml): File

将SimpleXMLElement写入文件(作为XML)。

$file->writeDomXml(DOMDocument $document, ?\DOMNode $rootNode = null, int $flags = 0): File

将DOMDocument写入文件(作为XML)。将$rootNode$flags参数传递给saveXML()方法。

$file->writeDomHtml(DOMDocument $document, ?\DOMNode $rootNode = null): File

与上面相同,但使用DOMDocument的HTML保存方法。

文件操作

$file->chgrp(string|int $group): File

更改文件组。通常只有root用户才能操作。

$file->chmod(int $permissions): File

更改文件权限。通常只有文件所有者或root用户才能操作。

$file->chown(string|int $user, string|int|null $group = null): File

更改文件的所有者和组(如果提供)。通常只有root用户才能执行。

$file->copy(string $destination, bool $relativeFromCurrentFile = true, $context = null): File

复制文件并返回一个指向新文件的新实例。您可以将 $relativeFromCurrentFile 设置为 false,以告诉类不要对 $destination 进行任何修改,在这种情况下,参数将直接传递给本机 copy() 函数。无论何种情况,都会传递 $context

$file->link(string $name, bool $relativeFromCurrentFile = true): File

创建硬链接。这仅在文件上有效。您可以将 $relativeFromCurrentFile 设置为 false,以告诉类不要对 $name 进行任何修改,在这种情况下,参数将直接传递给本机 link() 函数。

$file->symlink(string $name, bool $relativeFromCurrentFile = true): File

与上面相同,但创建符号链接,因此它也可以用于其他内容(例如目录)。

$file->linkInfo(): ?int

返回文件的链接信息。参见 linkinfo()

$file->linkTarget(): File

返回一个指向(符号)链接目标的新的 File。

$file->lstat(): ?array

返回文件 lstat 的结果。参见 lstat()

$file->mkdir(): File

创建文件的子目录。当前文件必须是目录。所有参数都传递给 mkdir()

$file->moveUploadedFile(string $to, bool $relativeFromCurrentFile = true): File

如果文件是上传的文件,则将其移动到 $to。您可以将 $relativeFromCurrentFile 设置为 false,以告诉类不要对 $destination 进行任何修改,在这种情况下,参数将直接传递给本机 move_uploaded_file() 函数。返回新文件。

$file->rename(string $to, bool $relativeFromCurrentFile = true, $context = null): File

将文件重命名为 $to。您可以将 $relativeFromCurrentFile 设置为 false,以告诉类不要对 $destination 进行任何修改,在这种情况下,参数将直接传递给本机 rename() 函数。$context 总是传递。返回新文件。

$file->delete(bool $recursive, $context = null): File

如果文件是文件,则删除文件,如果文件是目录并且 $recursivetrue,则删除目录。将 $context 传递给所有对 unlink() 的调用。如果删除任何文件失败,则此操作被静默忽略,直到所有删除尝试完成,此时抛出异常。如果目录扫描失败,则应用相同逻辑。

$file->stat(): ?array

返回文件的 stat 结果。参见 stat()

$file->touch(int $time = time(), int $atime = $time): File

触摸文件,创建它。参数传递给 touch()

路径

$file->select($path): File, $file->go($path): File, $file->cd($path): File

返回一个指向新路径的新 File。新路径由当前路径和给定路径构建。

$file->relativePath(bool $force = false): string

返回文件的打印相对路径。这个路径始终相对于当前工作目录。如果$force设置为true,即使第一个文件夹不同,路径也将是相对的。

在Windows上,如果文件和工作目录在不同的驱动器上,即使$force设置为true,也会返回绝对路径。

其他

$file->fileNameMatches(string $pattern, int $flags = 0): bool

如果文件的名称与给定的模式匹配,则返回true。这些参数直接传递给fnmatch()

$file->diskFreeSpace(): ?float

如果PHP可以确定,则返回可用的磁盘空间。

$file->diskTotalSpace(): ?float

如果PHP可以确定,则返回总磁盘空间。

$file->__toString(): string

返回$file->path