вставить определенный элемент внутри EOD - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно ввести код внутри файла, когда есть инсталляция

результат должен быть

if (isset($_SESSION['admin']['id'])) {
  define('DIR_FS_IMAGES', '{$dir_fs_document_root}images/');  
  define('DIR_WS_IMAGES', '{$http_catalog}images/'); 
}

Внутри процесса установки я пробовал это, но если кажется, что не работает хорошо,Как обработать, чтобы получить такой же результат выше?

Спасибо

$file_contents = <<<ENDCFG
<?php
if (isset($_SESSION['admin']['id'])) {
define('DIR_FS_IMAGES', '{$dir_fs_document_root}/images/');  // path to files (REQUIRED)
define('DIR_WS_IMAGES', '{$http_catalog}/images/'); // URL to files (REQUIRED)
}
ENDCFG;

1 Ответ

0 голосов
/ 06 ноября 2019

Вы должны экранировать знак доллара $ в строке heredoc или использовать nowdoc строку вместо

Nowdocs для строк в одинарных кавычках, что heredocs для двойногостроки в кавычках. Nowdoc указывается аналогично heredoc, но внутри nowdoc анализ не выполняется.

<?php
$file_contents = <<<'ENDCFG'
<?php
if (isset($_SESSION['admin']['id'])) {
define('DIR_FS_IMAGES', '{$dir_fs_document_root}/images/');  // path to files (REQUIRED)
define('DIR_WS_IMAGES', '{$http_catalog}/images/'); // URL to files (REQUIRED)
}
ENDCFG;

file_put_contents('/tmp/out.php', $file_contents);

Результат

$ php test.php
$ file out.php
out.php: PHP script text, ASCII text
$ cat out.php
<?php
if (isset($_SESSION['admin']['id'])) {
define('DIR_FS_IMAGES', '{$dir_fs_document_root}/images/');  // path to files (REQUIRED)
define('DIR_WS_IMAGES', '{$http_catalog}/images/'); // URL to files (REQUIRED)
}
...