Require_once для переменной - PullRequest
22 голосов
/ 14 мая 2010

Я хочу вызвать require_once ("test.php"), но не отображать результат и сохранить его в переменной следующим образом:

$test = require_once('test.php');

//some operations like $test = preg_replace(…);

echo $test;

Решение:

test.php

<?php
$var = '/img/hello.jpg';

$res = <<<test

<style type="text/css">
body{background:url($var)#fff !important;}
</style>

test;

return $res;
?>

main.php

<?php
$test = require_once('test.php');

echo $test;
?>

Ответы [ 3 ]

28 голосов
/ 14 мая 2010

Возможно ли это?

Да, но вам нужно сделать явное return в необходимом файле:

//test.php

<? $result = "Hello, world!"; 
  return $result;
?>

//index.php

$test = require_once('test.php');  // Will contain "Hello, world!"

Это редко полезно - проверьте ответ Конрада на основе выходного буфера или ответ file_get_contents Адама - они, вероятно, лучше подходят для того, что вы хотите.

26 голосов
/ 14 мая 2010

«Результат» предположительно является строковым выводом?

В этом случае вы можете использовать ob_start для буферизации указанного вывода:

ob_start();
require_once('test.php');
$test = ob_get_contents();

РЕДАКТИРОВАТЬ Судя по отредактированному вопросу, похоже, что вы хотите иметь функцию внутри включенного файла. В любом случае, это, вероятно, будет (намного!) Более чистое решение:

<?php // test.php:

function some_function() {
    // Do something.
    return 'some result';
}

?>

<?php // Main file:

require_once('test.php');

$result = test_function(); // Calls the function defined in test.php.
…
?>
3 голосов
/ 14 мая 2010

file_get_contents получит содержимое файла. Если он находится на том же сервере и на него ссылается путь (а не URL), он получит содержимое test.php. Если он удаленный или на него ссылается url, он получит выходные данные скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...