Php 用户霜&;AWS SDK
在UserFrosting之外,我有以下代码按预期工作:Php 用户霜&;AWS SDK,php,amazon-web-services,amazon-s3,aws-sdk,userfrosting,Php,Amazon Web Services,Amazon S3,Aws Sdk,Userfrosting,在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
<?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>";
}
使用Aws\Common\Aws;放置在initialize.php中,位于对Slim的引用下面:
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”
我遗漏了什么?正如您所看到的,它正在
Aws
类的UserFrosting\
命名空间中查找,但它显然不在其中
您需要使用Aws\Common\Aws代码>位于要引用类的每个文件的顶部。或者,您可以简单地使用类的完全限定名引用该类:
$aws=\aws\Common\aws::factory('../aws/aws config.json')代码>
我建议花一个小时左右的时间来了解更多。它们在现代PHP中是一个极其重要的概念,与Composer、autoloading和the密切相关。除此之外,如果不查看更多代码上下文以了解调用UserFrosting
命名空间的位置/方式,就无法解决OP的特定错误,但是这个答案应该让OP指向正确的方向。@MikeBrant在这个版本的UserFrosting中,大多数都是从名称空间UserFrosting开始的代码>在顶部。因此,如果OP对命名空间不熟悉,他们可能没有意识到PHP会考虑到所有引用的类的命名空间,除非明确声明否则。
public function readS3(){
$aws = Aws::factory('../aws/aws-config.json');
$client = $aws->get('S3');
...
}