PHP не передает переменную

Я столкнулся с довольно странной проблемой, которая поставила меня в тупик.

Я пытаюсь передать переменную PHP из одного файла в другой, а затем подключить эту переменную к функции поиска в Flickr API.

Чтобы поместить в контекст, это тянет переменную ($ location), содержащую местоположение прогноза погоды. $ location (находится в scraper.php), который определяется пользовательским вводом, входит в функцию поиска. Функция отправляет запрос в API Flickr, который возвращает URL-адрес изображения.

как идет

require_once('flickr.php');
include 'scraper.php';

$Flickr = new Flickr;
$data = $Flickr->search($location);

Имейте в виду, все это прекрасно работает, если я определю строку поиска в самом файле. Только когда я пытаюсь использовать переменную из scraper.php, она вообще ничего не ищет. Например:

$string = 'hawaii'
$Flickr = new Flickr;
$data = $Flickr->search($string);

Выше работает просто отлично. Чтобы сделать вещи еще более запутанными, если я выведу «$ location» перед тем, как оно перейдет в функцию поиска, я получу правильный результат. Переменная есть и включена. По какой-то причине он просто не будет реализован.

Любая помощь будет оценена. Вот полный код проекта:

search.php:

echo $location;
$Flickr = new Flickr;
$data = $Flickr->search($location);

foreach($data['photos']['photo'] as $photo) {

//returns 1 photo url at large size (1024)
$image_url = 'http://farm' . $photo["farm"] . '.static.flickr.com/' . $photo["server"] . '/' . $photo["id"] . '_' . $photo["secret"] . '_b.jpg';
}

flickr.php (ключ API вынут):

include 'scraper.php';

class Flickr {
private $apiKey = 'MYAPIKEY';

public function __construct() {
}

public function search($query = null) {
$search = 'http://flickr.com/services/rest/?method=flickr.photos.search&api_key=' . $this->apiKey . '&text=' . urlencode($query) . '&tags=city&sort=relevance&safe_search=1&per_page=1&content_type=1&has_geo=1&format=php_serial';
$result = file_get_contents($search);
$result = unserialize($result);
return $result;
}
}

Я не собираюсь включать scraper.php, потому что он довольно большой, но я сделаю это, если понадобится. $ location работает нормально.

Спасибо!

РЕДАКТИРОВАТЬ: scraper.php также используется и передает переменные на другую страницу, чтобы отобразить погоду.

Когда я просто отображаю ‘$ location’ из ‘search.php’, я получаю правильный результат в верхней части, как я упоминал ранее.

вот код (search.php):

$Flickr = new Flickr;
echo $location;

$data = $Flickr->search($location);

Команда echo хорошо печатается сверху. Это просто не войдет в функцию поиска!

1

Решение

возможно, у вас есть проблема включения нескольких файлов. Пожалуйста, используйте include_once для включения ‘scraper.php’, так как вы включаете его несколько раз.

in flickr.php

include_once('scraper.php');

while searching...

require_once('flickr.php');
include_once('scraper.php'); //include or remove this line as it is already included in your flickr.php

$Flickr = new Flickr;
$data = $Flickr->search($location);
0

Другие решения

Спасибо всем за помощь!

Я немного консолидировал свой код и включил команды PHP из ‘search.php’ прямо в файл, необходимый для запуска поиска. Я наконец смог передать переменную. Вырезав посредника и сохранив все это в одном файле, все стало работать отлично. Должно быть проблема включения.

0

По вопросам рекламы [email protected]