0

私はこの問題をいじっていて、解決できません - ここで誰かがヒントを手伝ってくれるかどうかを確認したかっただけです

クラスをロードして、このようにコンストラクターを呼び出しています

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);
    }

}

これはかなり基本的なことですが、理解できていないようです。その変数 $config を動的にする方法を教えてもらえますか?

4

1 に答える 1

3

インクルードされたファイルと渡された配列のフォーマットが 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
                )
            )
        )
    );

}
于 2015-02-21T14:31:19.420 に答える