PHP: Деревья
Теория: Виртуальная файловая система
В этом курсе мы создадим виртуальную (не настоящую) файловую систему и реализуем повседневные операции для работы с ней: подсчет свободного места, поиск файлов и директорий и т.п. Вот как выглядит создание этого дерева:
В результате получается такая структура:
Вкладывая вызовы mkdir и mkfile в другие mkdir, можно получить любую файловую структуру. Корнем в этой структуре будет директория, а в листьях могут оказаться как файлы, так и пустые директории.
Эта структура виртуальная, то есть реального создания файлов и директорий не происходит. Вся информация о файловой системе находится в переменной tree. Если ее распечатать на экран, то мы увидим следующее содержимое:
Это внутренняя реализация файлового дерева. Она состоит из двух типов узлов: директорий и файлов.
Представление директории:
Представление файла:
У файлов и директорий есть имена, это общая часть. Свойство type определяет тип ноды и с его помощью можно понять что перед нами во время обработки этого дерева. meta — объект с произвольными данными, например, размером, датой создания и так далее. Свойства задаются во время создания узлов:
Метаданные понадобятся функциям, которые анализируют дерево, например считают занятое место.
.png)
