Skip to content

Commit

Permalink
Added "Writing directories" section to the user manual.
Browse files Browse the repository at this point in the history
  • Loading branch information
vinogradsoft committed Nov 5, 2023
1 parent f8815c2 commit f1dfa5a
Show file tree
Hide file tree
Showing 4 changed files with 289 additions and 18 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
- Минимальная версия php 8.0
- Предпочтительный способ установки - через [composer](http://getcomposer.org/download/).

> Windows не поддерживается.
Запустите команду

```
Expand Down Expand Up @@ -37,7 +39,7 @@ composer require vinogradsoft/simple-files "^2.0"
* [Структурные методы директорий](./docs/guide-ru/directory-structural-methods.md)
* [Прикладные методы директорий](./docs/guide-ru/applied-methods.md)
* [Копирование директорий](./docs/guide-ru/copying-directories.md)
* [Создание директорий](./docs/guide-ru/stub.md)
* [Запись директорий](./docs/guide-ru/writing-directories.md)
* [Перемещение директорий](./docs/guide-ru/stub.md)
* [Удаление директорий](./docs/guide-ru/stub.md)

Expand Down
16 changes: 8 additions & 8 deletions docs/guide-ru/applied-methods.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@

Пример использования метода [copy()](copying-directories.md).

### Метод writeTo

Метод `writeTo()` записывает текущее состояние объектной модели в указанное место, аналогично методу `copy()`, но с
одним отличием: связанные файлы не считываются, а записываются "как есть". Все остальные характеристики этих методов
идентичны.

Пример использования метода [writeTo()](writing-directories.md).

### Метод move

Метод `move` перемещает файлы и директории на основе объектной модели.
Expand All @@ -57,14 +65,6 @@

Пример использования метода [move()](stub.md).

### Метод writeTo

Метод `writeTo()` записывает текущее состояние объектной модели в указанное место, аналогично методу `copy()`, но с
одним отличием: связанные файлы не считываются, а записываются "как есть". Все остальные характеристики этих методов
идентичны.

Пример использования метода [writeTo()](stub.md).

### Метод delete

Метод `delete()` удаляет объектную модель из системы, физически удаляя все связанные файлы и папки.
Expand Down
17 changes: 8 additions & 9 deletions docs/guide-ru/copying-directories.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,9 @@
разделы ["Обработка содержимого файла перед записью"](processing-file-contents-before-writing.md)
и ["Структурные методы директорий"](directory-structural-methods.md).

> Консольная команда в этом примере создается для выдуманного приложения. Для понимания структуры модуля в примере
> следует прочитать раздел
> с [описанием](applied-methods.md). Код для запуска можно скачать из
> этого [репозитория](https://github.com/vinogradsoft/example).
> Консольная команда в этом примере создается для выдуманного приложения. Для понимания, как работает метод копирования
> и понимания структуры модуля в примере, следует прочитать раздел с [описанием](applied-methods.md). Код для запуска
> можно скачать из этого [репозитория](https://github.com/vinogradsoft/example).
### Постановка задачи

Expand All @@ -26,7 +25,7 @@
> второй шаблон не будем хранить на диске, таким образом изобразим некое вычисляемое содержимое файла `package.xml`,
> чтобы раскрыть в примере смешанную объектную модель в которой есть файлы существующие на диске, и несуществующие.
### Описание кода
### Реализация

Шаблон для `package.xml` будет иметь такой вид:

Expand Down Expand Up @@ -189,15 +188,15 @@ class ModuleCreator
Класс состоит из одного метода `create`. Первым параметром мы будем принимать путь - где создавать структуру модуля.
Вторым параметром название вендора. И третьим название модуля.

В теле метода сначала мы создаем обязательные объекты директорий `etc`,`Controller`,`Model` и `View`. За тем создаем два
В теле метода сначала мы создаем обязательные объекты директорий `etc`,`Controller`,`Model` и `View`. Затем создаем два
объекта директорий с именами вендора и модуля взятые из аргументов. Далее создаем два объекта файла, один из
которых создается связанным с шаблоном `composer.json.tpl` на диске. Потом устанавливаем шаблон для файла `package.xml`
в виде строки, используя метод `setContent`. Файлу `composer.json.tpl` меняем название на целевое `composer.json`, и
обоим объектам файла добавляем слушатель `TemplateHandler`. Последним этапом формируем объектную модель файлов и
директорий модуля, такую которая должна быть в нашем приложении. За тем выполняем метод `copy` передав путь куда
директорий модуля, такую которая должна быть в нашем приложении. Затем выполняем метод `copy` передав путь куда
копировать модель.

Когда вызовется метод `copy`, произойдет такая работа: сначала создадутся все папки начиная с корневой, за тем файлы,
Когда вызовется метод `copy`, произойдет такая работа: сначала создадутся все папки начиная с корневой, затем файлы,
причем связанный файл будет сначала загружен и перед записью на диск модифицирован.

Наконец создадим файл, который будем запускать из консоли, так называемую, точку входа в приложение. Файл будет
Expand Down Expand Up @@ -246,7 +245,7 @@ php copy -v=VendorName -m=ModuleName
cd path/to/cloned/example/bin/
```

Где `path/to/cloned` та папка в которую вы скачали пример.
Где `path/to/cloned` та папка, в которую вы скачали пример.
После этого можно создавать новые модули командой `php copy -v=<Vendor Name> -m=<Module Name>`.
Повторный вызов команды с теми же параметрами приведет к перезаписи файлов `package.xml` и `composer.json` в модуле.

Expand Down
Loading

0 comments on commit f1dfa5a

Please sign in to comment.