если установлен git запустить команду git clone https://github.com/DatsivStepan/testukrtech.git
При использовании BinarTask1 или BinarTask2, прописать подключение в MySQL в соответствующих файлах, база даних, и таблица создаются автоматически
$this->db = new db();
если настройки, отличаються от
....($dbhost = 'localhost', $dbuser = 'root', $dbpass = ''.....
перед запуском, файла index.php, розкоментировать и внести необходимие параметри(по необходимости)
//Реализовать класс для построения бинара. Он должен принимать parent_id и position
$model = new BinarTask1;
$model->parentId = 1; //parent_id - узел должен существовать
$model->position = BinarTask1::POSITION_RIGTH;
echo $model->save(); //Вывод состояния
$model = new BinarTask2;
//Класс будет автоматически заполнять бинар до 5 уровня
echo $model->autoCreate(); //принимает два параметра 1 - id елемента с котрого надо начать заполнять(по умолчанию 1), 2- количество уровней(по умолчанию 2)
//возвращений результата true|false
//Также класс должен дать возможность получить по id ячейки все нижестоящие
var_dump($model->getNextElements(4)); //возвращает масив елементов нижестоящих
//и вышестоящие ячейки.
var_dump($model->getPreElements(1)); //возвращает масив елементов вишестоящих
Реализация классов для работы с бинаром. Предварительно создать таблицу для хранения ячеек бинара. Изначально в корне бинара нужно поставить ячейку, от которой будет построение дальнейшего дерева.
id | int(11) | идентификатор ячейки |
parent_id | int(11) | идентификатор родителя |
position | int(11) | позиция ячейки относительно родителя (1 ли 2), то есть слева или справа от родителя |
path | varchar(12288) | путь ячейки вида 1.3.8, где 8 это id текущей ячейки, а 3 и 1 - это родители ячейки снизу вверх. https://gist.github.com/codedokode/10539720#4-materialized-path |
level | int(11) | уровень бинара, начиная от 1 |
Условие 1. Реализовать класс для построения бинара. Он должен принимать parent_id и position для создания ячейки, остальные данные должен формировать автоматически.
Условие 2. Реализовать отдельно класс для управления бинаром. Класс будет автоматически заполнять бинар до 5 уровня, включительно, слева направо, сверху вниз. Также класс должен дать возможность получить по id ячейки все нижестоящие и вышестоящие ячейки.