即使它被“包含”也无法调用PHP函数

时间:2012-06-08 12:43:00

标签: php function scope

我最近开始使用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;
}

非常感谢任何帮助...

4 个答案:

答案 0 :(得分:3)

在函数调用之前不需要$

$short_url = $encode($long_id);

应该是

$short_url = encode($long_id);

答案 1 :(得分:1)

只有在函数存储在变量中时才需要美元符号(不是)。

$short_url = encode($long_id);

答案 2 :(得分:1)

从功能前删除美元符号。 PHP中的美元符号表示变量

答案 3 :(得分: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的define()和引用。这也假设您的文件是相对的(但如果不只是将文件夹添加到文件名前面) - 如果您从不同的服务器移动您的站点(即测试,生产),这将确保您不会遇到任何问题。