0

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

4 回答 4

3

您在函数调用之前不需要 $

$short_url = $encode($long_id);

应该

$short_url = encode($long_id);
于 2012-06-08T12:44:24.560 回答
1

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

$short_url = encode($long_id);
于 2012-06-08T12:44:19.077 回答
1

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

于 2012-06-08T12:44:35.123 回答
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');

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

于 2012-06-08T13:03:51.840 回答