Неизвестная ошибка категории - PullRequest
0 голосов
/ 01 июня 2018

Когда я использую свойство категории, я вижу эту ошибку:

Неустранимая ошибка: Uncaught CloudRail \ Error \ IllegalArgumentError: Использован недопустимый аргумент: неизвестная категория.в ... \ vendor \ cloudrail \ library-php \ src \ Service \ GooglePlaces.php

Без категории все работает нормально.Мой код:

$cr_service = load_cloudrail_service('GooglePlaces');
$retrievedPOIs = $cr_service->getNearbyPOIs(50.45594, 30.465612, 40000, '', ['restaurant']);

function load_cloudrail_service($serviceName = 'Foursquare') {
  global $options;

  Settings::$licenseKey = $options['cr_key'];

  switch ($serviceName) {
    case 'Foursquare':
    $result = new Foursquare( $options['fsquare_id'], $options['fsquare_secret'] );
    break;
    case 'Yelp':
    $result = new \CloudRail\Service\Yelp( $options['yelp_key'] );
    break;
    case 'GooglePlaces':
    $result = new GooglePlaces( $options['gplaces_key'] );
    break;
  }
  return $result;
}

Та же ошибка с другими сервисами.Что не так?Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 августа 2018

Спасибо за обновление до версии 1.0.2.Это помогло.Но когда я попытался обновить версию, я получил неверную версию cloudrail.Чтобы избежать этой проблемы, просто удалите composer.lock или используйте команду composer install update для обновления зависимостей в файле блокировки.

0 голосов
/ 05 июня 2018

Я не знаю, опубликовали ли вы весь код класса, но кажется, что импорт выполняется неправильно.Чтобы избежать ошибки неизвестной категории, убедитесь, что вы загрузили правильные классы:

При интеграции через composer вы можете загрузить все классы, используя автозагрузчик по умолчанию, и вам просто нужно указать, какие категориивы используете с оператором require (или require_once) и убедитесь, что вы установили SDK, используя composer install или эквивалентный.Протестируйте следующий код (я уже тестировал для CloudRail v1.0.1), если он не работает должным образом, то это должно быть что-то либо в автозагрузке, либо в композере:

<?php

require_once __DIR__ . '/vendor/autoload.php';

use CloudRail\Service\Foursquare;
use CloudRail\Service\GooglePlaces;
use CloudRail\Service\Yelp;

use CloudRail\Settings;

Settings::$licenseKey = "[CLOUDRAIL_KEY]";

/**
 * @var \CloudRail\Interfaces\PointsOfInterest
 */
$service = null;

/**
 * @var string
 */
$serviceName = "GooglePlaces"; //TODO:Just change the interface name :)

switch ($serviceName){
    case "Foursquare":
        $service = new Foursquare( "[FOURSQUARE_KEY]","[FOURSQUARE_SECRET]]");
        break;
    case "Yelp":
        $service = new Yelp( "[API_KEY]");
        break;
    case "GooglePlaces":
        $service = new GooglePlaces( "[API_KEY]");
        break;
}

$retrievedPOIs = $service->getNearbyPOIs( -15.7662,-47.8829,3000,"cafe",[]);

var_dump($retrievedPOIs);
...