我正在尝试编写一些使用继承从AWS访问S3的图像的代码。我已经让代码在一个长文件中工作,但它有点笨拙。
我是PHP继承的新手,所以我不确定这里出了什么问题。我有一个名为PersonPics
的类,它继承自myAWS
。这些在第三个文件downloadImages
中引用。
我已追踪到与$s3Client
变量相关的错误。
当我将myAWS
类中编写的代码写为$this->s3Client->getIterator(...)
时,我在null错误上调用成员函数时出错。如果我将其更改为$this->$s3Client->getIterator(...)
,我会得到一个未定义的变量s3ClientError
,尽管它是在构造函数中定义的。
我做错了什么?
myAWS.php
class myAWS{
private $s3Client;
private $bucket = 'my-bucket';
function __construct() {
$S3Client = S3Client::factory(array( ... )); //credentials inserted
}
function getImages($name){
$img_iter = $this->s3Client->getIterator('ListObjects', array(
'Bucket' => $bucket,
'Prefix' => $name . '/img',
));
// ... more
return img_arr;
}
}
PersonPics.php
error_reporting(E_ALL);
ini_set("display_errors","On");
require_once __DIR__ . '/myAWS.php';
class PersonPics extends myAWS {
public $name;
function __construct($name){
$this->$name = $name;
}
function getImages(){
$pic_arr = parent::getImages($this->name);
// more functionality to be added later using $pic_arr
}
}
downloadImages.php
require_once __DIR__ . '/myAWS.php';
require_once __DIR__ . '/PersonPics.php';
$name = $_GET["name"];
$aws = new myAWS();
$lookupPerson = new PersonPics($name);
$images = $lookupPerson->getImages();
答案 0 :(得分:1)
在构造函数中,您正在设置局部变量。你的意思是设置成员变量。将其更改为:
function __construct() {
$this->s3Client = S3Client::factory(array( ... )); //credentials inserted
}
注意''在变量名中也是如此。
答案 1 :(得分:0)
用以下代码替换myAWS.php类,让我知道它是否适合你
class myAWS{
private $s3Client;
private $bucket = 'my-bucket';
function __construct() {
$this->s3Client = S3Client::factory(array( ... )); //credentials inserted
}
function getImages($name){
$img_iter = $this->s3Client->getIterator('ListObjects', array(
'Bucket' => $bucket,
'Prefix' => $name . '/img',
));
// ... more
return img_arr;
}
}