hellpers / structurer
文件系统操作
Requires
- php: >=7.3.0
- hellpers/pather: 1.1.0
Requires (Dev)
- phpunit/phpunit: ^7.5
README
hellpers/structurer - 文件系统操作。
安装
composer require hellpers/structurer
示例
/* |------------------------------------------------------------------------------ | Статичный способ |------------------------------------------------------------------------------ | | Первый параметр принимает абсолютный путь - структуру каталогов, которую | необходимо выстроить. Недостающие папки будут созданы. | | Второй, не обязательный параметр, принимает название файла, который будет | создан в финальной папке. | | Третий, не обязательный параметр, принимает число в восьмеричной системе | счисления. Устанавливает права доступа для файлов и каталогов в создаваемой | структуре. По умолчанию - 0777. | | Возвращает строку - абсолютный и развернутый путь, который был создан. | */ $path = Structurer::make(__DIR__ . '/../one/two', 'file.txt', 0777); /* |------------------------------------------------------------------------------ | Статичный способ с созданием файла и заполнением его контентом |------------------------------------------------------------------------------ | | Первый параметр принимает абсолютный путь - структуру каталогов, которую | необходимо выстроить. Недостающие папки будут созданы. Последняя часть | структуры пути оценивается как имя файла, который и будет создан. | | Второй, не обязательный параметр, принимает текст, который необходимо записать | в файл. | | Третий, не обязательный параметр, принимает булевое значение, где true - | дописать текст в конец файла, false - записать текст поверх уже находящегося в | файле. | | Четвертый, не обязательный параметр, принимает число в восьмеричной системе | счисления. Устанавливает права доступа для файлов и каталогов в создаваемой | структуре. По умолчанию - 0777. | | Возвращает строку - абсолютный и развернутый путь, который был создан. | */ $path = Structurer::cmake(__DIR__ . '/../file.txt', 'Test string', true, 0777); /* ========================================================================= */ /* |------------------------------------------------------------------------------ | Более функциональный, объектный способ |------------------------------------------------------------------------------ | | При создании объекта необходимо передать абсолютный путь к каталогу, в | котором будет проиходить вся работа. Обычно это корень приложения. | */ $structurer = new Structurer(__DIR__ . '/../'); /* |------------------------------------------------------------------------------ | Цепочка вызовов ниже, делает следующее: |------------------------------------------------------------------------------ | | 1. Метод folder() создает папку "one" и осуществляет в нее переход; | 2. В папке "one" создается папка "two"; | 3. В папке "two" создается папка по имени текущей даты (об этом ниже); | 4. В папке с именем даты создается папка "three"; | 5. Метод back() возвращает на уровень выше - в папке с именем даты; | 6. Метод file() создает файл "test.txt"; | 7. Рядом создается файл с именем текущей даты и расширением .txt; | 8. Метод content() записывает текст "Test string" в файл с именем текущей | даты. | */ $result = $structurer ->folder('one') ->folder('two') ->folder(Structurer::d('Y-m-d')) ->folder('three') ->back() ->file('test.txt') ->file(Structurer::d('Y-m-d') . '.txt') ->content('Test string'); /* |------------------------------------------------------------------------------ | По итогу работы можно получить некоторую информацию |------------------------------------------------------------------------------ | | Метод path() вернет абсолютный путь к месту на котором был указатель. | Например, в данном случае: .../hellpers/Structurer/one/two/2018-11-23 | | Метод ls() вернет массив со списком файлов и папок в папке, на которой | находится указатель. Например, в данном случае: | Array | ( | [0] => 2018-11-23.txt | [1] => test.txt | [2] => three | ) | */ $path = $result->path(); $ls = $result->ls();
所有方法的文档
创建对象时,传递到对象内部的目录的绝对路径,该路径被认为是应用程序的根。在操作过程中,对象可以将指针设置为正在操作的文件。
folder() 在应用程序的根目录中创建文件夹。第一个参数是创建的文件夹名称,第二个参数是该文件夹的权限。权限以八进制数指定,参数是可选的,默认值为0777。所有不允许(取决于执行脚本的操作系统)的名称符号将被下划线替换。返回一个新的Structurer类对象,其中根设置为创建的文件夹。
back() 将当前目录提升到上一级。类似于 ".."。当需要在同一目录内创建多个目录时可能很有用。由于创建目录时将执行 back(),因此 back() 允许返回上一级。返回一个新的Structurer类对象,其中根设置为上一级目录。
file() 在应用程序的根目录中创建文件。接受与 folder() 相同的参数,只是创建文件而不是文件夹。参数处理方式相同。返回当前对象,其中光标位于创建的文件上。
content() 将文本写入光标所在文件。第一个参数是文本本身。第二个参数(可选),接受一个布尔值,其中 true 表示将文本追加到文件末尾,false 表示覆盖文件中的现有内容。第二个参数默认为 false。
mode() 更改文件/文件夹的权限、所有者和组。第一个参数接受一个数组,其中可以作为键的是 PHP 中的一个函数名称:chmod()、chown() 或 chgrp(),而作为值的是与原始函数相同的参数。默认情况下,权限更改应用于当前目录,或者当光标指向文件时,应用于文件。如果需要将函数应用于目录,则必须将第二个参数传递为 true。
path() 获取当前目录的绝对路径。返回包含当前目录展开路径的字符串。如果传递 true,则当光标位于文件上时,将返回与文件一起的路径。
ls() 获取当前目录中的文件列表。返回一个包含当前目录中文件和文件夹列表的数组。
d() 创建一个用于 DateTime::format() 方法转换的模板。这是一个静态方法。有时创建包含日期元素的文件和/或文件夹名称非常方便,例如记录日志。传递已经准备好的名称并不总是实用的,因为如果脚本长时间运行并跨越日期,那么名称将继续对应于前一天的日期。该方法接受与 DateTime::format() 方法相同的模板,并返回相同的模板,但包装在一个特殊的内部类中,可以将其用于给文件夹和文件命名,因为名称将在创建时直接由 DateTime::format() 方法处理,即始终是最新的。
make() 简单的静态方法,用于创建多级结构。第一个参数接受需要实现的结构的绝对路径。第二个参数(可选),接受需要创建的文件的名称,如果需要创建文件并将其放置在第一个参数指定的路径下。第三个参数(可选),接受创建的文件和目录的八进制权限模式,默认设置为0777。如果创建了文件,则返回创建的绝对路径和展开路径。
cmake() 简单的静态方法,用于创建多级结构(含文件)。第一个参数接受需要实现的结构的绝对路径(最后一个元素将是文件)。第二个参数(可选),接受需要写入文件的字符串。第三个参数(可选),接受布尔值,其中true表示将文本追加到文件末尾,false表示覆盖文件中的现有内容。第四个参数(可选),接受创建的文件和目录的八进制权限模式,默认设置为0777。返回创建的绝对路径和展开路径。