如何获取 public 个对象

How to get the public objects

我正在使用 Rackspace API 开发 PHP,这是我在这里使用的:

$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
                (
                )

        )

)

这样至少我可以使用那些对象,有什么建议吗?

它是一个 Guzzle\Http\Url 对象,您将无法访问其受保护或私有的属性。 class 是 defined here,因此您可以使用任何 public 方法来访问其状态。

您也可以像这样将其转换为字符串:

$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