各位大大們日安,我遭遇到了一個理想卻無法實現的問題,我想讓我的主要的頁面能夠加載額外的tmeplate,並且在template可以使用主要頁面的變數,但是在main.php的變數只能通用在自己的scope
。
include 'todo.php';
$order_number = 1569;
$html = file_get_contents('./todo.php');
echo $html;
<!-- template -->
<div>
<div>
<?php
echo $order_number;
?>
</div>
</div>
此為錯誤訊息,在加載下個頁面後,是錯誤的。
Notice: Undefined variable: order in /*/side.php on line 4
是否這個方法,只能靠著全域變數來解決呢?還是有其他不同性質的函示可以呼叫呢?先在此謝謝各位大俠鼎力相助。
index.php
<?php
$order_number = 1569;
include 'todo.php';
?>
todo.php
<div>
<div>
<?php
echo $order_number;
?>
</div>
</div>
result
雖然不是用 file_get_contents
但這樣是你要的?
我想到一個略呆的方式處理給樓主參考看看
index.php
<?php
include 'todo.php';
$myVar = 1569;
$html = file_get_contents('./todo.php');
echo str_replace('{{$myVar}}',$myVar,$html);
?>
todo.php
<!-- template -->
<div>
<div>{{$myVar}}</div>
</div>
RESULT:
{{$myVar}}
1569
說明:
todo.php裡面要輸出的php變數用{{}}包括起來,這樣比較有像在玩樣版,例如{{$myVar}}
index.php裡面的$html是通過file_get_contents取得,可以把它想像為取得todo.php整個文件的文字內容,接下來就是用str_replace把'{{$myVar}}'換成真正的變數$myVar,結果即為所求。
如果這個取代的動作很頻繁的話可以考慮寫個函式處理,降低源碼重覆性,以上~
參考看看我以前寫給別人的這個做法。
可以更有效的使用及解決你的問題。
其實跟上面第一位的回答意思是類似的。
只是我把他給封裝來使用了。