PHPackages                             hellpers/structurer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. hellpers/structurer

ActiveLibrary[File &amp; Storage](/categories/file-storage)

hellpers/structurer
===================

Работа с файловой системой

2.1.2(7y ago)0941MITPHPPHP &gt;=7.3.0

Since Jul 8Pushed 6y ago1 watchersCompare

[ Source](https://github.com/adikalon/structurer)[ Packagist](https://packagist.org/packages/hellpers/structurer)[ Docs](https://github.com/adikalon/structurer)[ RSS](/packages/hellpers-structurer/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (2)Versions (7)Used By (1)

Structurer
==========

[](#structurer)

**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() позволят вернуться на уровень выше. Возвращает новый объект класса 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. Возвращает абсолютный и развернутый путь, который был создан.

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~54 days

Total

6

Last Release

2590d ago

Major Versions

1.0.1 → 2.0.02018-11-26

PHP version history (2 changes)1.0.0PHP &gt;=5.3.0

2.1.0PHP &gt;=7.3.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/37a5ba19dd5b3e1591bbea02b04d235a6742f5110d392a7f13383633c68ff09e?d=identicon)[adikalon](/maintainers/adikalon)

---

Top Contributors

[![adikalon](https://avatars.githubusercontent.com/u/20326545?v=4)](https://github.com/adikalon "adikalon (7 commits)")

---

Tags

adikalonhellpersstructurer

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/hellpers-structurer/health.svg)

```
[![Health](https://phpackages.com/badges/hellpers-structurer/health.svg)](https://phpackages.com/packages/hellpers-structurer)
```

###  Alternatives

[knplabs/gaufrette

PHP library that provides a filesystem abstraction layer

2.5k39.8M123](/packages/knplabs-gaufrette)[google/cloud-storage

Cloud Storage Client for PHP

34390.8M124](/packages/google-cloud-storage)[illuminate/filesystem

The Illuminate Filesystem package.

15261.6M2.6k](/packages/illuminate-filesystem)[superbalist/flysystem-google-storage

Flysystem adapter for Google Cloud Storage

26320.6M30](/packages/superbalist-flysystem-google-storage)[creocoder/yii2-flysystem

The flysystem extension for the Yii framework

2931.7M62](/packages/creocoder-yii2-flysystem)[flowjs/flow-php-server

PHP library for handling chunk uploads. Works with flow.js html5 file uploads.

2451.6M15](/packages/flowjs-flow-php-server)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
