1

PHP 5.5 を使用しており、AWS-SDK for PHP を使用しようとしています。

私のコードは次のようになります。

require_once 'AWS/aws.phar';

use Aws\DynamoDb\DynamoDbClient;


DynamoDBAccessLayer::init();


class DynamoDBAccessLayer {

    public static $client;

    public static $AWSCredentials = array(
        'region' => 'us-east-1',
        'key' => 'KEY',
        'secret' => 'SECRET'
    );

    public static function init() {
        self::$client = DynamoDbClient::factory(self::$AWSCredentials);
    }
}

この時点で私がやろうとしているのは、クライアントを開始することだけですが、名前空間に関連する問題があり、init() が実行されると次のエラーがスローされます。

PHP Fatal error:  Class 'Aws\DynamoDb\DynamoDbClient' not found in....

これが名前空間の問題であることがわかっている理由は、次のコードがエラーなしでクライアントを適切に割り当てているからです。

require_once 'AWS/aws.phar';

use Aws\DynamoDb\DynamoDbClient;

DynamoDBAccessLayer::$client = Aws\DynamoDb\DynamoDbClient::factory(DynamoDbAccessLayer::$AWSCredentials);

class DynamoDBAccessLayer {

    public static $client;

    public static $AWSCredentials = array(
        'region' => 'us-east-1',
        'key' => 'KEY',
        'secret' => 'SECRET'
    );
}

そのため、PHP はこれらの静的メソッドの外部にある DynamoDbClient クラスにアクセスできますが、内部にアクセスすることはできません。

init() 静的メソッド内で Aws\DynamoDb\DynamoDbClient にアクセスできるようにするにはどうすればよいですか?

4

1 に答える 1