2013-10-09 55 views
0

我創建了一個簡單的示例php文件來顯示一些函數輸出。這裏是代碼..通過另一個文件調用PHP函數

<?php 
// $printName = hello('samitha'); 
// $printHeader = pageHeader('main','on'); 

switch (key($_GET)){ 
    case 'red': 
     $printHeader = pageHeader('red','on'); 
     $printName = hello('Joel'); 
     break; 

    case 'blue': 
     $printHeader = pageHeader('blue','off'); 
     $printName = hello('Duck'); 
     break; 

    case 'yellow': 
     //$printHeader = pageHeader('yellow','on'); 
     break; 
} 


function hello($name){ 
    return $name; 
} 


function pageHeader($header,$onoff){ 
    if ($onoff == 'on') { 
     return $header."page header<br>"; 
    } 
    else {return null;} 
} 

echo $printHeader; 
echo $printName; 

?> 

此代碼工作正常,沒有任何問題。

當我稱之爲 'example.com/php/tipo34.php?red',它顯示在屏幕上:

redpage header 
Joel 

當我稱之爲「example.com/php/tipo34.php?blue 「它顯示在屏幕上:

Duck 

我試圖把所謂的tipo34-req.php另一個PHP文件內的以下功能並收到以下錯誤:

Fatal error: Call to undefined function pageHeader() in C:\wamp\www\php\tipo34.php on line 8 

的代碼我想:

<?php 
// $printName = hello('samitha'); 
// $printHeader = pageHeader('main','on'); 
switch (key($_GET)){ 
    case 'red': 
     $printHeader = pageHeader('red','on'); 
     $printName = hello('samitha'); 
     break; 

    case 'blue': 
     $printHeader = pageHeader('blue','off'); 
     $printName = hello('kalum'); 
     break; 

    case 'yellow': 
     //$printHeader = pageHeader('yellow','on'); 
     break; 
} 

include 'tipo34-req.php'; 

echo $printHeader; 
echo $printName; 

?> 

tipo34-req.php代碼:

<?php 
function hello($name){ 
    global $name; 
    return $name; 
} 

function pageHeader($header,$onoff){ global $header, $onoff 
    if ($onoff == 'on') { 
     return $header."page header<br>"; 
    } 
    else {return null;} 
} 
?> 

我該如何解決這個問題?直接在文件上使用函數,但是當我把函數放在另一個php文件中時,它會拋出錯誤。

謝謝。

+0

你是否在頁面上包含你想使用函數的其他文件?http://php.net/manual/en/function.include.php – Maximus2012

+0

我想工作的地方我叫這些變量echo $ printHeader; echo $ printName;但我想存儲在另一個文件裏面的功能....對不起,因爲糟糕的英語:( –

回答

6

將您的文件包含在其內容使用之上。 PHP不知道這些函數,因爲它們稍後會包含在代碼中。

include 'tipo34-req.php'; 

switch (key($_GET)){ 
    case 'red': 
     $printHeader = pageHeader('red','on'); 
     $printName = hello('samitha'); 
    break; 

    case 'blue': 
     $printHeader = pageHeader('blue','off'); 
     $printName = hello('kalum'); 
    break; 

    case 'yellow': 
     //$printHeader = pageHeader('yellow','on'); 
    break; 


} 

echo $printHeader; 
echo $printName; 

?> 
+0

是的,這是問題,上面的代碼是我的主要項目的示例代碼..我不能改變整個模板佈局...有沒有方式做到這一點?請 –

+0

是的,我試過這個,但問題是我的項目代碼佈局結構....我不能改變整個代碼..請給我另一種方法來做到這一點..謝謝你的答覆 –

+1

不知道我你是否因爲某些原因而無法編輯主文件?所有的函數都必須在使用前定義。因此,你需要在執行前以某種方式包含文件。函數? – gh123man

1

在調用任何函數之前,您是否嘗試過在頂部包含文件?

+0

是的,我試過這個。但問題是我的項目代碼佈局結構....我不能改變整個代碼..請給我另一種方法來做到這一點..感謝您的答覆... –

+0

你可以添加switch語句到你的函數文件?也許把它放在一個函數本身?如果您提供了有關您的代碼佈局結構的更多信息,我們可以提供幫助,因爲這似乎是真正的問題。 – Joao

+0

對不起,我不能添加切換選擇塊功能文件... :(感謝您的答覆 –

相關問題