2014-01-16 33 views
0

Smarty 3有一個選項來設置(分配)一個變量,然後將文件包含(獲取)到一個新變量。
如何在沒有Smarty課程的情況下做到這一點? file_get_contents不起作用,還有別的嗎?使用沒有Smarty的fetch()?

例如,這是Smarty的代碼:

<?php 
$variable = 'Hello World'; 
$smarty->assign('variable', $variable); 
$content = $smarty->fetch('content.tpl'); // content.tpl have "{$variable}" inside 
echo '<script>document.write("' . $content . '")</script>'; // this will output <script>document.write("Hello World")</script> 
?> 

我想這樣做不Smarty的:

<?php 
$variable = 'Hello World'; 
$content = file_get_contents('content.php'); // content.php have "echo $variable;" inside 
echo '<script>document.write("' . $content . '")</script>';// this needs to output <script>document.write("Hello World")</script>, but it's outputing echo $variable; 
?> 
+0

你想分配變量還是使用修飾符? –

+0

僅分配變量 - 輸出文件將回顯它們。例如$ var ='hi'; $ output = open('output.php');回聲&輸出; //需要返回'hi' – user2881986

+0

output.php中會有什麼?這將是聰明的模板或什麼? –

回答

0

您可以緩衝招數優勢。

function fetch($filename, array $vars) { 

    ob_start(); // Start output buffering 

    extract($vars); // Extract variables 

    require($filename); // Include a file 

    return ob_get_clean(); // Pass variables to included filename and return output as a string 
} 

然後你就可以使用它像這樣:

$content = fetch('content.php', array(
    'variable' => 'Hello World', 
    'name'  => 'John Doe', 
)); 

echo $content; 

content.php看起來像如下:

<div> 
    <b><?php echo $variable; ?></b>, you're logged in as <?php echo $name; ?> 
</div> 

它輸出的Hello World,你登錄爲李四

+0

看起來非常好,但它沒有迴應任何東西。我是否需要緩衝技巧的任何PHP設置? – user2881986

+0

在腳本的頂部放置'error_reporting(-1)'。這將確保顯示所有錯誤 – Yang

+0

注意:未定義的變量:content.php中的變量 – user2881986