2

UserFrosting の外で期待どおりに動作する次のコードがあります。

<?php
echo "Hello World.<br>";

require_once '../vendor/autoload.php';

use Aws\Common\Aws;

$aws = Aws::factory('../aws/aws-config.json');
$client = $aws->get('S3');

$bucket = 'my-public-public';

$iterator = $client->getIterator('ListObjects', array(
    'Bucket' => $bucket
));

foreach ($iterator as $object) {
    echo $object['Key'] . "<br>";
}

UserFrosting インスタンスで、Composer を使用してaws-sdk-phpを正常にロードできました。

  - Installing aws/aws-sdk-php (3.19.24)
    Downloading: 100%

Aws\Common\Aws を使用します。Slim への参照の下のinitialize.phpに配置されます。

use \Slim\Extras\Middleware\CsrfGuard;
use Aws\Common\Aws;

残りのコードはコントローラーにあります。

    public function readS3(){
        $aws = Aws::factory('../aws/aws-config.json');
        $client = $aws->get('S3');
        ...
    }

私はまだ次のエラーが発生しています:

クラス 'UserFrosting\Aws' が見つかりません。

私は何が欠けていますか?

4

1 に答える 1

2

ご覧のとおりUserFrosting\、クラスの名前空間を探していますAwsが、明らかにそこには存在しません!

クラスを参照するすべてのファイルuse Aws\Common\Aws;の先頭にが必要です。または、完全修飾名を使用してクラスを参照することもできます。Aws

$aws = \Aws\Common\Aws::factory('../aws/aws-config.json');

PHP Namespacesの詳細については、1 時間ほどかかることをお勧めします。これらは、最新の PHP において非常に重要な概念であり、Composer、オートローディング、およびPSR-4 標準と密接に関連しています。

于 2016-11-14T20:52:43.893 に答える