61 votes

exiger/inclure dans la variable

Je veux exiger/inclure un fichier et récupérer son contenu dans une variable.

test.php

 <?php
echo "seconds passed since 01-01-1970 00:00 GMT is ".time();
?>

index.php

 <?php
$test=require("test.php");
echo "the content of test.php is:<hr>".$test;
?>

Comme file_get_contents() mais qu'il devrait toujours exécuter le code PHP. Est-ce possible?

84voto

alex Points 186293

Si votre fichier inclus a renvoyé une variable...

inclure.php

 <?php
return 'abc';

... alors vous pouvez l'affecter à une variable comme ceci ...

 $abc = include 'include.php';

Sinon, utilisez la mise en mémoire tampon de sortie.

 ob_start();
include 'include.php';
$buffer = ob_get_clean();

81voto

user6 Points 1799

J'ai aussi eu ce problème une fois, essayez quelque chose comme

 <?php
function requireToVar($file){
    ob_start();
    require($file);
    return ob_get_clean();
}
$test=requireToVar($test);
?>

6voto

Tadeck Points 37046

Vous pouvez écrire dans le fichier inclus :

 <?php
    return 'seconds etc.';

Et dans le fichier à partir duquel vous incluez :

 <?php
    $text = include('file.php'); // just assigns value returned in file

1voto

Álvaro G. Vicario Points 57607

En PHP/7, vous pouvez utiliser une fonction anonyme à auto-appel pour accomplir une encapsulation simple et empêcher la portée globale de polluer avec des variables globales aléatoires :

 return (function () {
    // Local variables (not exported)
    $current_time = time();
    $reference_time = '01-01-1970 00:00';

    return "seconds passed since $reference_time GMT is $current_time";
})();

Une syntaxe alternative pour PHP/5.3+ serait :

 return call_user_func(function(){
    // Local variables (not exported)
    $current_time = time();
    $reference_time = '01-01-1970 00:00';

    return "seconds passed since $reference_time GMT is $current_time";
});

Vous pouvez ensuite choisir le nom de la variable comme d'habitude :

 $banner = require 'test.php';

0voto

ankitjaininfo Points 4395

Utilisez shell_exec("php test.php") . Il renvoie la sortie de l'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X