2012-06-08 2 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__), обычно не добавляя конечную косую черту к пути. Используя приведенный выше код, вы будете уверены, что вы используете окна или linux (или еще лучше взгляните на функцию spl_autoload: http://php.net/manual/en/function.spl-autoload.php) –

Смежные вопросы