'', 'secret_access_key' => '', 'session_token' => '', 'expiration_timepoint_seconds' => 0, ]; } private $access_key_id; private $secret_access_key; private $session_token; private $expiration_timepoint_seconds = 0; public function __get($name) { return $this->$name; } function __construct(array $options = []) { parent::__construct(); $options = new Options($options, self::defaults()); $this->access_key_id = $options->access_key_id->asString(); $this->secret_access_key = $options->secret_access_key->asString(); $this->session_token = $options->session_token ? $options->session_token->asString() : null; $this->expiration_timepoint_seconds = $options->expiration_timepoint_seconds->asInt(); if (strlen($this->access_key_id) == 0) { throw new \InvalidArgumentException("access_key_id must be provided"); } if (strlen($this->secret_access_key) == 0) { throw new \InvalidArgumentException("secret_access_key must be provided"); } $creds_options = self::$crt->aws_credentials_options_new(); self::$crt->aws_credentials_options_set_access_key_id($creds_options, $this->access_key_id); self::$crt->aws_credentials_options_set_secret_access_key($creds_options, $this->secret_access_key); self::$crt->aws_credentials_options_set_session_token($creds_options, $this->session_token); self::$crt->aws_credentials_options_set_expiration_timepoint_seconds($creds_options, $this->expiration_timepoint_seconds); $this->acquire(self::$crt->aws_credentials_new($creds_options)); self::$crt->aws_credentials_options_release($creds_options); } function __destruct() { self::$crt->aws_credentials_release($this->release()); parent::__destruct(); } }