在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:
- Installing aws/aws-sdk-php (3.19.24)
Downloading: 100%使用Aws\ placed \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”。
我遗漏了什么?
发布于 2016-11-14 20:52:43
正如您所看到的,它正在查找UserFrosting\名称空间中的Aws类,但它显然不存在于其中!
您需要use Aws\Common\Aws;位于的顶部,每个文件都要引用类Aws。或者,您可以简单地使用类的完全限定名引用该类:
$aws = \Aws\Common\Aws::factory('../aws/aws-config.json');
我建议花一个小时左右来了解更多关于PHP命名空间的知识。它们是现代PHP中一个非常重要的概念,与作曲家、自动加载和PSR-4标准密切相关。
https://stackoverflow.com/questions/40595182
复制相似问题