$ s3-> getObject возвращает закрытый класс (не может получить доступ к свойствам) - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь записать функцию, которая загружает контент из моей корзины S3. Основная проблема у меня заключается в том, что $s3->getObject возвращает класс с закрытыми свойствами.

Я использую "aws/aws-sdk-php": "^3.54" через композитор, и это мои методы.

Мой главный контроллер

public function download($idDocument = null) {
    $document = $this->Documents->get(['where' => ['id_document' => $idDocument]]);
    $document = $document[0];
    // Download file from S3
    $this->load->library('s3');
    $response = $this->s3->downloadFromS3($document->path);

    var_dump($response);
    die();
}

Это моя библиотека S3, которую я вызываю в верхнем контроллере

public function authorize() {
    $s3 = new Aws\S3\S3Client([
        'version' => 'latest',
        'region' => 'eu-central-1',
        'credentials' => [
            'key' => $this->config->config['s3_access_key'],
            'secret' => $this->config->config['s3_secret_key']
        ]
    ]);

    return $s3;
}

public function downloadFromS3($uniqueIdTypeAndName) {
     $s3 = $this->authorize();
     $object = $s3->getObject([
         'Bucket' => $this->config->config['s3_bucket_name'],
         'Key' => $uniqueIdTypeAndName
     ]);

     return $object;
}

И это ответ, если я var_dump($response); моей библиотечной функции

enter image description here

Поэтому, когда я пытаюсь вызвать $ response-> ContentType, я получаю Message: Undefined property: Aws\Result::$ContentType

Что я могу сделать, чтобы мой класс был общедоступным, а свойства - доступными? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я предоставлю. Спасибо

1 Ответ

0 голосов
/ 16 мая 2018

Я понял это.Вы должны обращаться к свойствам этого объекта так же, как к массиву.

В моем случае, если я пытаюсь получить доступ к типу содержимого $ response, мне нужно вызвать

$response['ContentType']
...