Как уйти от плохого кода

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
maksclub
Сообщения: 18
Зарегистрирован: 2017.07.12, 23:47

Как уйти от плохого кода

Сообщение maksclub »

Вывод меток на Яндекс-карте идет через массив, например $items

Код: Выделить всё

$items = [
    [
        'latitude' => 52.906386,
        'longitude' => 59.954092,
        'options' => [
            [
                'hintContent' => 'Подсказка при наведении на маркет',
                'balloonContentHeader' => 'Заголовок после нажатия на маркер',
                'balloonContentBody' => 'Контент после нажатия на маркер',
                'balloonContentFooter' => 'Футер после нажатия на маркер',
            ],
            [
                'preset' => 'islands#icon',
                'iconColor' => '#19a111'
            ]
        ]
    ],
 ]
Вот какой код я нагородил в views/studio/index

Код: Выделить всё

    <?php
    // Массив меток
    $items = [];$i = 0;
    
    foreach ($studios as $studio){
        $items[$i]['latitude'] = $studio->geo_lat;
        $items[$i]['longitude'] = $studio->geo_lon;
        $items[$i]['options'][0]['balloonContentHeader'] = $studio->name;
        $items[$i]['options'][0]['balloonContentBody'] = '<a href="/studio/view?id='.$studio->id.'">' .$studio->phone . '</a>';
        $items[$i]['options'][0]['balloonContentFooter'] = $studio->description;
        $items[$i]['options'][1]['preset'] = 'islands#icon';
        $items[$i]['options'][1]['iconColor'] = '#19a111';
        $i++;
    }
?>
Как по-другому уйти от этого кода в сторону хорошего ООП,
я новичек — будет полезен любой совет, то есть мне не нужен прямо готовый кусок кода в рот :)
ну и отсыла к учебникам по ООП тоже не нужно:) изучаю :):):)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как уйти от плохого кода

Сообщение zelenin »

Код: Выделить всё

$items = array_map(function(Studio $studio) {
    return $this->itemFactory->createFromStudio($studio); // new Item($studio->geo_lat, $studio->geo_lon, ...);
}, $studios);
maksclub
Сообщения: 18
Зарегистрирован: 2017.07.12, 23:47

Re: Как уйти от плохого кода

Сообщение maksclub »

Спасибо большое, еще вопрос, такого рода код нужно помещать в сервис?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как уйти от плохого кода

Сообщение zelenin »

maksclub писал(а): 2017.08.01, 20:23 Спасибо большое, еще вопрос, такого рода код нужно помещать в сервис?
сервис = служба. служебный.
nepob
Сообщения: 18
Зарегистрирован: 2016.02.23, 09:25

Re: Как уйти от плохого кода

Сообщение nepob »

Улыбнул костыль с $i. Почему бы так не сделать?

Код: Выделить всё

foreach ($studios as $studio) {
    $items[] = [
        'latitude' => $studio->geo_lat,
        'longitude' => $studio->geo_lon,
        'options' => [
            [
                'hintContent' => $studio->name,
                'balloonContentHeader' => '<a href="/studio/view?id=' . $studio->id . '">' . $studio->phone . '</a>',
                'balloonContentBody' => $studio->name,
                'balloonContentFooter' => $studio->description,
            ],
            [
                'preset' => self::PRESENT_VALUE,
                'iconColor' => self::ICON_COLOR_VALUE,
            ],
        ],
    ];
}
maksclub
Сообщения: 18
Зарегистрирован: 2017.07.12, 23:47

Re: Как уйти от плохого кода

Сообщение maksclub »

nepob писал(а): 2017.08.01, 20:32 Улыбнул костыль с $i. Почему бы так не сделать?
и действительно, я новичек + много читаю сейчас — каша в голове :)
скоро по полкам раскидается все...

спасибо
Ответить