hellpers/structurer

文件系统操作

2.1.2 2019-04-07 17:41 UTC

This package is auto-updated.

Last update: 2024-09-29 04:49:45 UTC


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。返回创建的绝对路径和展开路径。