@MarkLb

Как улучшить читабельность кода при большом объёме пользовательского текста?

Порой в коде встречаю такой объёмный пользовательский текст:

Код


public function attributeHints()
    {
        return [
            'internalMarkup' => 'Если наценка уже заложена в цену товара - будет использоваться для рассчёта партнерской награды',
            'refundChat' => '
            Добавьте бота <b><a target="_blank" href="https://t.me/' . \Yii::$app->params['telegram.botName'] . '">@' . \Yii::$app->params['telegram.botName'] . '</a> </b> в чат/канал магазина. <br>
            Чтобы узнать ID чата: пригласите <b><a target="_blank" href="https://t.me/myidbot"> @myidbot</a></b> и вызовите команду <b><span class="text-danger">/getid</span></b>. <br>
            Чтобы узнать ID канала: перешлите <b><a target="_blank" href="https://t.me/myidbot"> @myidbot</a></b> любой пост из канала. <br>
            '
        ];
    }

$message[] = Emoji::SHOPPING_BAGS . Html::a("Заказ №{$order->getId()}", $orderUrl);
            $message[] = Emoji::SPEECH_BALLOON . "Комментарий: $cancel->comment";
            $message[] = Emoji::C_CREDIT_CARD . "Счёт: $cancel->bill";
            $message[] = Emoji::C_MONEY_WITH_WINGS . "Сумма: <b>{$cancel->getPrettySum()}</b>";

            $this->telegramMessage->sendMessage(\Yii::$app->params['telegram.refundChat.id'], implode(PHP_EOL, $message));


Код (наглядные скриншоты из IDE)

UVocHlf.png
gFxyGCz.png
IH97EGi.png

Думаю, что он ухудшает читаемость кода.

Хочется текст объёмный вынести куда-то "снаружу". Например: хранить в отдельном файле, назначить идентификатор и подключать таким образом:
ContentStorage::get('PROVIDER_CANCEL_ERROR')

Полагаю, что с данной проблемой уже сталкивались и есть для неё похожее решение.

Используется фреймворк: Yii2. В нём есть средства интернационализации, и используя их можно вставлять идентификатор текста, вместо самого текста: Yii:t('PROVIDER_CANCEL_ERROR'), но всё же он не для таких целей предназначен.
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
В коде вообще не должно быть подобного содержимого
В ларавел это решается выносом строковых литералов в файлы перевода

throw new Exception(__('messages.order_failed'));

// messages.php:
return [
    'order_failed' => 'любое количество текста',
]


Наверняка в Yii тоже есть подобный механизм.

UPD
Упс, не дочитал. А всё из-за ваших скриншотов, отвлекли


Используется фреймворк: Yii2. В нём есть средства интернационализации, и используя их можно вставлять идентификатор текста, вместо самого текста: Yii:t('PROVIDER_CANCEL_ERROR'), но всё же он не для таких целей предназначен.


Именно для этого данные средства и предназначены.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽