wergio
@wergio
Программист - любитель!

Как перенести длинную строку в коде?

Есть вот такая строка, но она длинная и неудобная.
Буду благодарен, если кто-нибудь объяснит как правильно перенести строки не нарушая работу скрипта.
$send .= "sudo screen -dmS screen_name docker run " . $user_container . " " . $memory_container . " -d -it --cpus '1' --memory=" . $mem . "m " . $v1 . " " . $v2 . " " . $v3 . " " . $v4 . " " . $v5 . " -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 " . $v6 . " " . $v7 . " " . $v8 . " " . $v9 . " " . $v10 . " " . $v11 . " " . $v12 . " " . $v13 . ";";


Пробовал вот так:
$send .= "sudo screen -dmS screen_name docker run  \
 " . $user_container . " " . $memory_container . " -d -it --cpus '1' --memory=" . $mem . "m \
" . $v1 . " " . $v2 . " " . $v3 . " " . $v4 . " " . $v5 . " -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8  \
" . $v6 . " " . $v7 . " " . $v8 . " " . $v9 . " " . $v10 . " " . $v11 . " " . $v12 . " " . $v13 . ";";
  • Вопрос задан
  • 245 просмотров
Пригласить эксперта
Ответы на вопрос 4
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
$send .= "sudo screen -dmS screen_name docker run $user_container $memory_container -d -it --cpus '1' --memory=" . $mem."m $v1 $v2 $v3 $v4 $v5 -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 $v6 $v7 $v8 $v9 $v10 $v11 $v12 $v13;";

но как же я задолбался все эти кавычечки выковыривать
Ответ написан
Newto
@Newto
Практика писать
$text = "text " . "$param" . "...";
Весьма распространенная, к сожалению.
Гораздо читабельней написать
$text = "text {$param}...";
Исходя из этого и измените вашу строку. Вот как выглядело бы начало:
$send .= "sudo screen -dmS screen_name docker run {$user_container } {$memory_container}  -d -it --cpus '1' --memory={$mem}m"

А там уже переносы строк ставьте где хотите.

P.S. Фигурные скобки, обрамляющие переменные, не обязательны. Но они выделяют эти переменные зрительно, а так же выделяются в разных IDE(средах разработки, проще говоря редакторах кода).
Ответ написан
Adamos
@Adamos
$send .= <<<LONGSTRING
sudo screen -dmS screen_name docker run $user_container $memory_container -d -it \
--cpus '1' --memory=${mem}m $v1 $v2 $v3 $v4 $v5 -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 \
$v6 $v7 $v8 $v9 $v10 $v11 $v12 $v13;
LONGSTRING;

$send .= implode(' ', [
  'sudo screen -dmS screen_name docker run',
  $user_container,
  $memory_container,
  "-d -it --cpus '1'",
  '--memory=' . $mem . 'm',
  $v1, $v2, $v3, $v4, $v5,
  '-e LANG=C.UTF-8 -e LC_ALL=C.UTF-8',
  $v6, $v7, $v8, $v9, $v10, $v11, $v12, $v13
]);
Ответ написан
Комментировать
den_rad
@den_rad
PHP разработчик
Можете использовать sprintf() или
$send .= "sudo screen -dmS screen_name docker run "
. $user_container . " " . $memory_container .
" -d -it --cpus '1' --memory=" . $mem . "m " . $v1 . " " . $v2 . " " . $v3 . " " . $v4 . " " . $v5
. " -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 " . $v6 . " " . $v7 . " " . $v8 . " " . $v9 . " " . $v10 . " " . $v11 . " " . $v12 . " " . $v13 . ";";
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы