2013-01-16 83 views
0

新手的PHP文件,很抱歉讓您煩惱。在PHP中包含帶有參數

我想問一些問題,如果我想包括一個php頁面,我可以使用參數來定義我將調用的頁面嗎?

假設我必須在我的模板頁面中包含標題部分。每個頁面都有不同的標題,這些標題將被表示爲圖像。所以,

我可以在我的template.php裏面調用<?php @include('title.php',<image title>); ?>嗎?

所以包含將返回帶有特定圖片的標題頁來表示標題。

謝謝你們。

回答

4

包含的頁面將會看到當前作用域的所有變量。

$title = 'image title'; 
include('title.php'); 

然後在你的title.php文件中有那個變量。

echo '<h1>'.$title.'</h1>'; 

建議在使用它之前檢查變量isset()。喜歡這個。

if(isset($title)) 
{ 
    echo '<h1>'.$title.'</h1>'; 
} 
else 
{ 
    // handle an error 
} 

編輯:

另外,如果你想用一個函數調用的方法。最好使該功能特定於被包含文件執行的活動。

function do_title($title) 
{ 
    include('title.php'); // note: $title will be a local variable 
} 
+1

謝謝mathew:D – Coderama

1

不知道這是你在找什麼,但你可以創建一個函數來包含文件並傳遞一個變量。

function includeFile($file, $param) { 
    echo $param; 
    include_once($file); 
} 

includeFile('title.php', "title"); 
0

在你包含的文件,你可以這樣做:

<?php 
return function($title) { 
    do_title_things($title); 
    do_other_things(); 
}; 

function do_title_things($title) { 
    // ... 
} 

function do_other_things() { 
    // ... 
} 

然後,您可以傳遞參數這樣:

$callback = include('myfile.php'); 
$callback('new title'); 

另一種較常用的模式是讓變量的新範圍通過:

function include_with_vars($file, $params) { 
    extract($params); 
    include($file); 
} 

include_with_vars('myfile.php', array(
    'title' => 'my title' 
)); 
+0

包括(..)缺少的文件不是失敗,而是一個警告,並將返回False。因此,$ callback = include(..)是一種不安全的做法。 – cgTag

0

包含的頁面將可以訪問包含之前定義的那些變量。如果你需要包含特定變量,我建議在要包含的頁面上定義這些變量