前提・実現したいこと
aws sdk for phpのクラスを
継承して使いたいのですがうまくいかず質問させていただいています。
発生している問題・エラーメッセージ
Fatal error: Uncaught TypeError: Argument 1 passed to Aws\S3\S3Client::__construct() must be of the type array, none given, called in
情報取得が成功するソースコード
以下のようにグローバルでの取得は成功しています。
php
1require '/var/www/html/vendor/autoload.php'; 2 3/** 4 * Summary. AWS sdk クラス読み込み 5 */ 6 7use Aws\S3\S3Client; 8use Aws\S3\Exception\S3Exception; 9 10$s3 = S3Client::factory( [ 11 'region' => 'ap-northeast-1', 12 'version' => 'latest', 13 'signature_version' => 'v4' 14] ); 15print_r($s3);
情報取得が失敗するソースコード
php
1require '/var/www/html/vendor/autoload.php'; 2 3/** 4 * Summary. AWS sdk クラス読み込み 5 */ 6 7use Aws\S3\S3Client; 8use Aws\S3\Exception\S3Exception; 9 10 11class AWSTestExtends extends S3Client { 12 13 private $s3; 14 15 /** 16 * @return mixed 17 */ 18 public function making_s3_instans () { 19 $afters3 = $this->s3_client_factory(); 20 return $afters3; 21 } 22 23 private function s3_client_factory () { 24 /** 25 * Summary. Instantiate the client. 26 */ 27 $this->s3 = parent::factory( [ 28 'region' => 'ap-northeast-1', 29 'version' => 'latest', 30 'signature_version' => 'v4' 31 ] ); 32 return $this->s3; 33 } 34 35} 36 37$awstestextendsvar = new AWSTestExtends; 38$atev = $awstestextendsvar->making_s3_instans(); 39print_r($atev);
試したこと
失敗するコードを以下のように変更してみたのですが
うまくいっておりません。
private function s3_client_factory ↓ public function s3_client_factory
parent::factory ↓ S3Client::factory
class AWSTestExtends extends S3Client ↓ class AWSTestExtends extends Aws\S3\S3Client
またfactoryメソッドはsdk2でDeprecatedなので
sdk3.xのような形でインスタンスから取得するというのも試してみました。
$this->s3 = parent::factory( [ 'region' => 'ap-northeast-1', 'version' => 'latest', 'signature_version' => 'v4' ] ); ↓ $this->s3 = new Aws\S3\S3Client([ 'region' => 'ap-northeast-1', 'version' => 'latest', 'signature_version' => 'v4' ] );
s3clientのページにコンストラクタの項目もあるので見てみたのですが解決方法を見つけられていない状態です。
おそらくオブジェクト指向の理解が浅いので継承のお作法が理解できていないのだと思いますが
自己解決に至らずこちらに書かせていただいています。
間違いなどご指摘いただけましたら幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/17 00:58
2018/02/20 01:14
2018/03/09 03:04