无法调用PHP函数,即使它是;包括「;

无法调用PHP函数,即使它是;包括「;,php,function,scope,Php,Function,Scope,我最近开始使用PHP。。。除了一件事,一切都好。 我正在尝试从另一个php文件调用函数。。。但它不起作用。 这可能真的很简单,但我还没有找到任何有用的方法来解决它 我曾经使用过“required_once”,但它仍然不起作用。 有人知道我哪里出错了吗 <?php require_once "/Applications/MAMP/htdocs/me/database_functions.php"; require_once "/Applications/MAMP/htdocs/me/enco

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

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


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


在函数调用之前不需要$

$short_url = $encode($long_id);
应该是

$short_url = encode($long_id);

在函数调用之前不需要$

$short_url = $encode($long_id);
应该是

$short_url = encode($long_id);

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

从函数前面删除美元符号。PHP中的美元符号表示变量

,正如所有其他人所说:

$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');

当然,您可以在文件名前面加上“/”前缀,而不是define()和对DS的引用。这还假设您的文件是相对的(但如果不只是将文件夹作为文件名的前缀),这将确保您从不同的服务器(即测试、生产)移动站点时不会遇到任何问题。

正如所有其他人所说:

$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');

当然,您可以在文件名前面加上“/”前缀,而不是define()和对DS的引用。这还假设您的文件是相对的(但如果不只是将文件夹作为文件名的前缀),这将确保您从不同的服务器(即测试、生产)移动站点时不会遇到任何问题。

$encode($long\u id)为什么以
$
开头?
$encode($long\u id)为什么一开始是
$
?好主意,看起来干净多了!谢谢很抱歉,我编辑了我的答案,因为我愚蠢地漏掉了目录分隔符,因为dirname(FILE)通常不会在路径前面加一个尾随斜杠。使用上述代码将使您在使用windows或linux时安全(或者更好地了解spl_自动加载功能:)这是一个好主意,看起来干净多了!谢谢很抱歉,我编辑了我的答案,因为我愚蠢地漏掉了目录分隔符,因为dirname(FILE)通常不会在路径前面加一个尾随斜杠。无论您使用的是windows还是linux,使用上面的代码都会使其变得安全(或者更好的方法是查看spl_autoload函数:)