2013-09-23 42 views
0
構造器

我這個問題擺弄並不能解決它 - 只是想檢查是否有人在這裏可以提示傳遞數組在PHP

我加載的類並調用這樣

include_once './Myaws.php'; 
$aws = new Myaws(); 
$aws->bucket = $images['config']['bucket']; 
構造幫助

Myaws.php如下

class Myaws { 

    public $bucket;  

    function __construct() {   
     $this->aws = Aws::factory('./config/aws_config.php'); 
    } 

} 

它的工作原理就像一個魅力!

現在的問題

的「./config/aws_config.php」只是一個數組,將根據部署階段改變 - 所以我想讓它充滿活力。以下是我做的,它不工作

include_once './Myaws.php'; 
$aws = new Myaws(); 
$aws->bucket = $images['config']['bucket']; 
$aws->config = $images['config']['awsconfig']; 

而在Myaws.php,我改變了以下

class Myaws { 

    public $bucket;  
    public $config;  

    function __construct() {   
     $this->aws = Aws::factory($this->config); 
    } 

} 

它不工作:(而且也不以下一個

include_once './Myaws.php'; 
$aws = new Myaws($images['config']['awsconfig']); 
$aws->bucket = $images['config']['bucket']; 

class Myaws { 

    public $bucket;  

    function __construct($config) {   
     $this->aws = Aws::factory($config); 
    } 

} 

這是非常基本哎呀,我似乎並沒有得到它,我認爲,任何人都可以建議我怎麼能作出這樣的變量$配置動態?

+1

是「圖像」指的是AMI當前方法的一個例子嗎? print_r($ config),並確保你傳遞你認爲你的東西。也可能需要詳細說明'不起作用' – Toby

+0

我沒有看到你的最後一個例子不起作用的原因。 PHP或'Aws'類是否觸發任何錯誤? –

+0

基本上,Aws :: factory('./config/aws_config.php')接受一個數組作爲輸入,如果我直接輸入一個數組,它會工作,如果我把它作爲一個配置文件它可以工作,但它不會如果我這樣做我向你展示的人的方式。 – foxybagga

回答

2

我發現包含文件與傳遞數組的格式不是100%兼容。同時檢查api文檔中他們如何使用my_profile來傳遞這些憑證。

這裏是我使用一代的配置

$aws = Aws::factory($this->getAwsConfig()); 


    private function getAwsConfig() 
{ 
    return array(
     // Bootstrap the configuration file with AWS specific features 
     'credentials' => array(
      'key' => $this->awsKey, 
      'secret' => $this->awsSecret 
     ), 
     'includes' => array('_aws'), 
     'services' => array(
      // All AWS clients extend from 'default_settings'. Here we are 
      // overriding 'default_settings' with our default credentials and 
      // providing a default region setting. 
      'default_settings' => array(
       'params' => array(
        'region' => $this->awsRegion 
       ) 
      ) 
     ) 
    ); 

}