2012-11-29 23 views
0

我想列出容器,到目前爲止,沒有運氣在所有的Windows Azure SDK上市...我已經嘗試過貨櫃PHP

$aBlobContainer = $blobRestProxy->listContainers(); 

for($i = 0;$i<= count($aBlobContainer); $i++) 
{ 
echo 'Blob Container name is: '.$aBlobContainer[$i]->Name."\n"; 
} 

,但我有錯誤

Cannot use object of type WindowsAzure\Blob\Models\ListContainersResult as array

一直試圖繞過它整天只是似乎無法取得任何進展......讓我知道如果我做一些愚蠢的事情,或者如果有更好的方法來找出容器是否已經存在?謝謝!

編輯:

變量$ aBlobContainer的的var_dump上來作爲

 

    object(WindowsAzure\Blob\Models\ListContainersResult)#42 (5) { 
     ["_containers":"WindowsAzure\Blob\Models\ListContainersResult":private]=> 
     array(2) { 
     [0]=> 
     object(WindowsAzure\Blob\Models\Container)#48 (4) { 
      ["_name":"WindowsAzure\Blob\Models\Container":private]=> 
      string(6) "abc123" 
      ["_url":"WindowsAzure\Blob\Models\Container":private]=> 
      string(48) "http://orig.blob.core.windows.net/abc123" 
      ["_metadata":"WindowsAzure\Blob\Models\Container":private]=> 
      array(0) { 
      } 
      ["_properties":"WindowsAzure\Blob\Models\Container":private]=> 
      object(WindowsAzure\Blob\Models\ContainerProperties)#47 (2) { 
      ["_lastModified":"WindowsAzure\Blob\Models\ContainerProperties":private]=> 
      object(DateTime)#49 (3) { 
       ["date"]=> 
       string(19) "2012-11-29 01:32:20" 
       ["timezone_type"]=> 
       int(2) 
       ["timezone"]=> 
       string(3) "GMT" 
      } 
      ["_etag":"WindowsAzure\Blob\Models\ContainerProperties":private]=> 
      string(19) ""0x8CF9BE88256926F"" 
      } 
     } 
     [1]=> 
     object(WindowsAzure\Blob\Models\Container)#46 (4) { 
      ["_name":"WindowsAzure\Blob\Models\Container":private]=> 
      string(8) "multi123" 
      ["_url":"WindowsAzure\Blob\Models\Container":private]=> 
      string(50) "http://orig.blob.core.windows.net/multi123" 
      ["_metadata":"WindowsAzure\Blob\Models\Container":private]=> 
      array(0) { 
      } 
      ["_properties":"WindowsAzure\Blob\Models\Container":private]=> 
      object(WindowsAzure\Blob\Models\ContainerProperties)#45 (2) { 
      ["_lastModified":"WindowsAzure\Blob\Models\ContainerProperties":private]=> 
      object(DateTime)#53 (3) { 
       ["date"]=> 
       string(19) "2012-11-29 03:13:16" 
       ["timezone_type"]=> 
       int(2) 
       ["timezone"]=> 
       string(3) "GMT" 
      } 
      ["_etag":"WindowsAzure\Blob\Models\ContainerProperties":private]=> 
      string(19) ""0x8CF9BF69C25759F"" 
      } 
     } 
     } 
     ["_prefix":"WindowsAzure\Blob\Models\ListContainersResult":private]=> 
     NULL 
     ["_marker":"WindowsAzure\Blob\Models\ListContainersResult":private]=> 
     NULL 
     ["_nextMarker":"WindowsAzure\Blob\Models\ListContainersResult":private]=> 
     NULL 
     ["_maxResults":"WindowsAzure\Blob\Models\ListContainersResult":private]=> 
     NULL 
    } 

回答

-1

從錯誤消息,它看起來像$ blobRestProxy-> listContainers()被返回的對象。嘗試下面的代碼。

$aBlobContainer = $blobRestProxy->listContainers(); 

foreach($aBlobContainer as $row) { 
    echo 'Blob Container name is: '.$row->Name."\n"; 
} 

當訪問$ aBlobContainer作爲數組(即$ aBlobContainer [$ i]於),它很可能給錯誤。

*編輯*

foreach($aBlobContainer as $key => $row) { 
    echo $row->Name . "\n"; 
} 
+0

我已經使用上面的代碼,它甚至不似乎運行的foreach聲明..想不到其他任何東西,我希望你知道我的意思..需要幫助 –

+0

什麼是var_dump($ aBlobContainer)的值?有沒有可能變量是空的? – user1418338

+0

變量不是空的....得到了轉儲 –

2

望着Source Code

$blobContainers = $blobRestProxy->listContainers(); //returns ListContainersResult 

爲了得到容器的上市,你必須做的後續調用:

$blobContainerArray = $blobContainers->getContainers(); //exposes the array of containers 

然後你應該可以使用該陣列y在foreachfor聲明。該工作流相匹配,作爲出現在README.md文件的容器內返回斑點的名單:

try { 
    // List blobs. 
    $blob_list = $blobRestProxy->listBlobs("mycontainer"); 
    $blobs = $blob_list->getBlobs(); 

    foreach($blobs as $blob) 
    { 
     echo $blob->getName().": ".$blob->getUrl()."<br />"; 
    } 
} catch(ServiceException $e){ 
    $code = $e->getCode(); 
    $error_message = $e->getMessage(); 
    echo $code.": ".$error_message."<br />"; 
} 
0
$options = new ListContainersOptions(); 
$options->setPrefix("prefixxxx"); 
$blobContainers = $blobRestProxy->listContainers($options); 
$blobContainerArray = $blobContainers->getContainers(); 

foreach ($blobContainerArray as $container) 
{ 
    Trace("Container: " . $container->getName()); 
}