Commit 5e4894f8 authored by Александр Плохих's avatar Александр Плохих 🌔
Browse files

Merge branch 'main' into 'PTPS|Function_8'

# Conflicts:
#   public/public/TestData/TestData.php
#   public/public/index.php
parents 1be36e6c 25f892a6
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
<?php

namespace App\Actions;

class PrepareMenuAction
{
    /**
     * Группирует подразедлы в верхние разделы меню
     * Дочерние элементы помещает в массив родителя с ключом submenu
     * Значение под ключом depth определяет уровень раздела
     * Массив $aMenu всегда должен начинается с элемента depth = 0,
     * все последующие элементы с depth = 1 являются его дочерними элементами
     *
     * @param array $aMenu
     * @return array
     */
    public static function prepare(array $aMenu): array
    {
        $returnableAMenu = [];
        foreach ($aMenu as $menuPoint) {

            $depth = $menuPoint["depth"];

            if ($depth === 1) {
                $tempArray = array_pop($returnableAMenu);
                $tempArray['submenu'][] = $menuPoint;
                $returnableAMenu[] = $tempArray;
            } else {
                $returnableAMenu[] = $menuPoint;
            }
        }

        return $returnableAMenu;
    }
}
+59 −0
Original line number Diff line number Diff line
@@ -10,6 +10,65 @@ class TestData
{
    public const FILE_PATH = "TestData/FileToRead.txt";

    public const RAW_MENU = [
        [
            'name' => 'Смартфоны и гаджеты',
            'depth' => 0,
        ],
        [
            'name' => 'Смартфоны, мобильные телефоны',
            'depth' => 1,
        ],
        [
            'name' => 'Планшеты',
            'depth' => 1,
        ],
        [
            'name' => 'Наушники и гарнитуры',
            'depth' => 1,
        ],
        [
            'name' => 'Компьютеры и ноутбуки',
            'depth' => 0,
        ],
        [
            'name' => 'Ноутбуки и аксессуары',
            'depth' => 1,
        ],
        [
            'name' => 'Компьютеры и мониторы',
            'depth' => 1,
        ],
        [
            'name' => 'Компьютерные комплектующие',
            'depth' => 1,
        ],
        [
            'name' => 'Техника для дома',
            'depth' => 0,
        ],
        [
            'name' => 'Техника для уборки',
            'depth' => 1,
        ],
        [
            'name' => 'Товары для ухода за одеждой',
            'depth' => 1,
        ],
        [
            'name' => 'Аксессуары для техники',
            'depth' => 1,
        ],
        [
            'name' => 'Товары для дома и кухни',
            'depth' => 0,
        ],
        [
            'name' => 'Посуда',
            'depth' => 1,
        ],
    ];

    public const ARRAY_FOR_SEARCHING = [
        [
            'id' => 30,
+10 −3
Original line number Diff line number Diff line
@@ -4,16 +4,23 @@ require_once __DIR__ . '/../vendor/autoload.php';

use App\Actions\ReadLogFileAction;
use App\Actions\IdSearchAction;
use App\Actions\PrepareMenuAction;
use App\TestData\TestData;

echo 'ReadLogFileAction: <br>'
echo 'ReadLogFileAction: <br>';
try {
    ReadLogFileAction::read(TestData::FILE_PATH);
} catch (Exception $ex) {
    echo $ex->getMessage();
}
echo '<hr>';

echo 'PrepareMenuAction: <br>';
var_dump(PrepareMenuAction::prepare(TestData::RAW_MENU));
>>>>>>> public/public/index.php
echo '<hr>'

echo 'IdSearchAction: <br>'
echo 'IdSearchAction: <br>';
var_dump(IdSearchAction::search(TestData::ARRAY_FOR_SEARCHING));
echo '<hr>'
<<<<<<< public/public/index.php
echo '<hr>';