2012-06-08 34 views
0

我最近開始使用PHP ......除了一件事情之外,所有事情都很好。 我想從另一個PHP文件調用一個函數......但它不工作。 這可能很簡單,但我沒有找到任何有用的解決辦法。即使「包含」也無法調用PHP函數

我已經使用「required_once」,但它仍然不起作用。 有誰知道我要去哪裏錯了?

<?php 
require_once "/Applications/MAMP/htdocs/me/database_functions.php"; 
require_once "/Applications/MAMP/htdocs/me/encode_decode.php"; 

if (isset($_POST['url']) && $_POST['url'] != "http://") 
{ 
//Get the url posted 
$long_url = $_POST['url']; 

//Create record in long_url table and return it's id 
$long_id = create_long_url($long_url); 

一切工作至今。但 的問題是這樣的下一個函數調用..它甚至不進入功能。

$short_url = $encode($long_id); 


}...............etc... 

encode_decode.php看起來有點像這樣...

<?php //encode_decode.php 


function encode($number) 
{ 
echo "<br />in encode"; 
//Encode numer to 6 char 
$s = strtr(rtrim(base64_encode(pack('i', $number)), '='), '+/', '-_'); 

echo $s; 

return $s; 
} 

任何幫助是極大的讚賞......如果函數存儲在

+0

'$ encode($ long_id);'爲什麼一個'$'開頭? – Sebas

回答

3

您不需要$你的函數調用之前

$short_url = $encode($long_id); 

應該

$short_url = encode($long_id); 
+0

哇,我多麼愚蠢!謝謝! – Robbie

1

只需要美元符號一個變量(它不是)。

$short_url = encode($long_id); 
+0

我很慚愧自己:(......謝謝你! – Robbie

1

從功能的前刪除美元符號。在PHP中一個美元符號表示變量

+0

我是個白癡!謝謝! – Robbie

0

由於所有其他人所說:

$short_url = encode($long_id); 

而且你可以清理你的require_once聲明:

define('DS', DIRECTORY_SEPARATOR); 
require_once(dirname(__FILE__) . DS . 'database_functions.php'); 
require_once(dirname(__FILE__) . DS . 'encode_decode.php'); 

相反的定義()和參考到DS你當然可以用'/'作爲你的文件名的前綴。這也假設你的文件是相對的(但如果不是隻是將文件夾作爲文件名的前綴) - 如果你從不同的服務器上移動你的網站(如測試,製作),這將確保你不會遇到任何問題。

+0

好主意,看起來很乾淨!謝謝! – Robbie

+0

對不起我已經編輯了我的答案,因爲我愚蠢地錯過了目錄分隔符,因爲dirname(__ FILE__)通常不會在路徑中預留一個斜槓。使用上面的代碼可以確保您使用的是Windows或Linux(或更好看看spl_autoload函數:http://php.net/manual/en/function.spl-autoload.php) –

相關問題