2015-06-18 4 views
1

я работаю на PHP с Rackspace API, это то, что я использовал здесь:Как получить государственные объекты

$file->setContent(fopen('sites/default/files/rackspace/' . $end_element, 'r+')); 
$cdnUrl = $file->getPublicUrl(); 
print_r($cdnUrl); 

И его возвращение мне ниже упомянутой структуры.

Guzzle\Http\Url Object 
(
    [scheme:protected] => http 
    [host:protected] => something.r2.cf3.rackcdn.com 
    [port:protected] => 
    [username:protected] => 
    [password:protected] => 
    [path:protected] => /something-abc.jpg 
    [fragment:protected] => 
    [query:protected] => Guzzle\Http\QueryString Object 
     (
      [fieldSeparator:protected] => & 
      [valueSeparator:protected] => = 
      [urlEncode:protected] => RFC 3986 
      [aggregator:protected] => 
      [data:protected] => Array 
       (
       ) 

     ) 

) 

Что мне нужно здесь что-то вроде этого:

Guzzle\Http\Url Object 
(
    [scheme] => http 
    [host] => something.r2.cf3.rackcdn.com 
    [port] => 
    [username] => 
    [password] => 
    [path] => /something-abc.jpg 
    [fragment] => 
    [query] => Guzzle\Http\QueryString Object 
     (
      [fieldSeparator] => & 
      [valueSeparator] => = 
      [urlEncode] => RFC 3986 
      [aggregator] => 
      [data] => Array 
       (
       ) 

     ) 

) 

Так что, по крайней мере, я могу использовать те объекты, любые предложения?

+0

Коллекция загружается как объекты, если это означает использование json_decode (array, true); – Ramki

+0

@Ramki, я использовал это, но он предоставил мне пустой вывод: '$ json_decode = json_decode ($ cdnUrl, true); print_r ($ json_decode); ' –

+0

@Ramki, о чем вы говорите? его объект не json, поэтому 'json_encode' не может делать то, что он хочет достичь. – tradyblix

ответ

3

Это объект Guzzle\Http\Url, и вы не сможете получить доступ к его охраняемым или приватным объектам. Класс defined here, поэтому вы можете использовать любой из общедоступных методов для доступа к его состоянию.

Вы также можете бросить его в строку следующим образом:

$stringUrl = (string) $url; 

Или доступ другие вещи:

$host = $url->getHost(); // something.r2.cf3.rackcdn.com 
$scheme = $url->getScheme(); // http 
$port = $url->getPort(); 
$path = $url->getPath(); // something-abc.jpg 

Запрос представляет другой объект, Guzzle\Http\QueryString:

$query = $url->getQuery(); 

Для получения дополнительной информации о видимости объекта, пожалуйста, обратитесь к official docs.

+0

Спасибо @hohner, это сработало. '$ cdnUrl = $ file-> getPublicUrl(); $ stringUrl = (string) $ cdnUrl; print_r ($ stringUrl); ' –