Я столкнулся с довольно странной проблемой, которая поставила меня в тупик.
Я пытаюсь передать переменную 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 хорошо печатается сверху. Это просто не войдет в функцию поиска!
возможно, у вас есть проблема включения нескольких файлов. Пожалуйста, используйте 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);
Спасибо всем за помощь!
Я немного консолидировал свой код и включил команды PHP из ‘search.php’ прямо в файл, необходимый для запуска поиска. Я наконец смог передать переменную. Вырезав посредника и сохранив все это в одном файле, все стало работать отлично. Должно быть проблема включения.