Completed
Push — master ( df8184...e3b994 )
by Aydin
02:31
created

examples/crazy-redraw.php (1 issue)

Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
use PhpSchool\CliMenu\CliMenu;
4
use PhpSchool\CliMenu\Builder\CliMenuBuilder;
5
use PhpSchool\CliMenu\MenuItem\LineBreakItem;
6
use PhpSchool\CliMenu\MenuItem\MenuItemInterface;
7
8
require_once(__DIR__ . '/../vendor/autoload.php');
9
10
$itemCallable = function (CliMenu $menu) {
11
    $colour = function () {
12
        return array_rand(array_flip(['blue', 'green', 'red', 'yellow']));
13
    };
14
    $int = function () {
15
        return rand(1, 20);
16
    };
17
18
    $bg = $colour();
19
    while (($fg = $colour()) === $bg) {
0 ignored issues
show
This while loop is empty and can be removed.

This check looks for while loops that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.

Consider removing the loop.

Loading history...
20
    }
21
    
22
    $menu->getStyle()->setBg($bg);
23
    $menu->getStyle()->setFg($fg);
24
    $menu->getStyle()->setPadding($int());
25
    $menu->getStyle()->setMargin($int());
26
27
    $items = $menu->getItems();
28
    
29
    array_walk($items, function (MenuItemInterface $item) use ($menu) {
30
        $menu->removeItem($item);
31
    });
32
33
    $items = array_filter($items, function (MenuItemInterface $item) {
34
        return !$item instanceof LineBreakItem;
35
    });
36
37
    foreach (range(0, rand(1, 5)) as $i) {
38
        $items[] = new LineBreakItem(array_rand(array_flip(['♥', '★', '😂 '])), rand(1, 3));
39
    }
40
    shuffle($items);
41
42
    array_walk(
43
        $items,
44
        function (MenuItemInterface $item) use ($menu) {
45
            $menu->addItem($item);
46
        }
47
    );
48
    
49
    $menu->redraw(true);
50
};
51
52
$menu = (new CliMenuBuilder)
53
    ->setTitle('Basic CLI Menu')
54
    ->setWidth(80)
55
    ->addItem('First Item', $itemCallable)
56
    ->addItem('Second Item', $itemCallable)
57
    ->addItem('Third Item', $itemCallable)
58
    ->addLineBreak('-')
59
    ->build();
60
61
$menu->open();
62