Прочитайте объект Geires для Firestore в PHP - PullRequest
0 голосов
/ 10 ноября 2019

У меня проблемы с чтением этого объекта, который я получаю из Geopoint моего документа Firestore.

Я не нашел никакой документации о том, как использовать PHP Framework для чтения этого геопункта (насколько это возможно в swift).

Полный массив выглядит так:

print_r($barDetails);
Array 
( 
[icone_img] => xqSUmb8kCWIanQj3okaf 
[geopoint] => Google\Cloud\Core\GeoPoint Object 
( 
[latitude:Google\Cloud\Core\GeoPoint:private] => 43.697092 [longitude:Google\Cloud\Core\GeoPoint:private] => 7.274421 
) 
[header_img] => SGYXf7DIYRvvpqLIEZr4 
[nom] => La Lupita 
[styles_ids] => Array 
( 
[0] => fKMTFTgAvhHN9D5e7n3p 
) 
[adresse] => 9 Rue de la Préfecture, 06300 Nice 
[description] => Aenean dictum lectus est, non fringilla enim tempus et. Nam dapibus elit in lobortis sagittis. Sed quis metus in lacus congue tempus at quis mi. 
)

Если я сделаю:

print_r($barDetails['geopoint']);

Я получу этот объект, который я не могучитать, чтобы получить широту и долготу отдельно:

Google\Cloud\Core\GeoPoint Object 
( 
[latitude:Google\Cloud\Core\GeoPoint:private] => 43.697092
[longitude:Google\Cloud\Core\GeoPoint:private] => 7.274421 
)

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Для доступа к свойству объекта необходимо использовать ->.

echo $object->property;


Inв этом случае вы хотите получить доступ к свойствам широты и долготы объекта geopoint.

Широта:

echo $barDetails['geopoint']->latitude;

Долгота:

echo $barDetails['geopoint']->longitude;


Важно. Помните, что к закрытым свойствам может обращаться только тот класс, который определяет это свойство. Таким образом, вышесказанное будет работать, только если ваши свойства установлены как общедоступные. В противном случае вам нужно будет создать метод в своем классе, чтобы разрешить доступ к свойствам вашего частного объекта.

Дополнительную информацию можно найти в этом другом потоке Stackoverflow .


Обновление

Для частных членов класса вам понадобится метод или функция "getter" внутри вашего класса, которые возвращают значениядля широты и долготы, чтобы разрешить доступ к этим значениям вне класса.

Широта:

echo $barDetails['geopoint']->latitude();

Долгота:

echo $barDetails['geopoint']->longitude();

Надеюсь, это поможет.

0 голосов
/ 11 ноября 2019

Хорошо, я посмотрел на это неправильно. Google\Cloud\Core\GeoPoint имеет простые функции, называемые latitude() и longitude(), которые можно найти здесь .

/**
     * Get the latitude
     *
     * Example:
     * ```
     * $latitude = $point->latitude();
     * ```
     *
     * @return float|null
     */
    public function latitude()
    {
        $this->checkContext('latitude', func_get_args());
        return $this->latitude;
    }

    /**
     * Get the longitude
     *
     * Example:
     * ```
     * $longitude = $point->longitude();
     * ```
     *
     * @return float|null
     */
    public function longitude()
    {
        $this->checkContext('longitude', func_get_args());
        return $this->longitude;
    }

Так что barDetails['geopoint']->latitude(); сделал свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...