PHP对象的属性可以是数组吗?如果是,我该如何从对象内部添加到它



我有一个对象来表示三个表中数据的组合,我正在努力使这个对象尽可能通用,这样数据库结构的变化就不必反映在对象中,并允许对象单独编辑这三个表,而不是生成长而复杂的SQL联接语句。

由于对象表示数据库表,公共属性是需要的/可接受的,我试图在构造函数中动态生成它们,但将信息所属的不同数据库表的属性分开

我的第一个想法是将数组中的每个表都保存在每个表的对象属性中。。。但是,向数组中添加数据的几次尝试都是空白的,所以这要么是不可能的,我只是用有意义的语法偷偷地过去了错误,要么我做错了。

有什么帮助吗?

class MemberObject
{
private $dbc;
private $memberID;
private $membersTable;
private $affiliatesTable;
private $clientsTable;
// Each DB held in own array
public $member = array();
public $affiliate = array();
public $client = array();
public function __construct(PDO $dbc, $memberID)
{
$this->dbc = $dbc;
$this->memberID = $memberID;
$this->membersTable = new DatabaseTable($dbc, 'member', 'memberID');
$this->affiliatesTable = new DatabaseTable($dbc, 'memberAffiliated', 'memberID');
$this->clientsTable = new DatabaseTable($dbc, 'memberClient', 'memberID');
$thisMember = $this->membersTable->findById($this->memberID);
$this->populateData($thisMember, $this->member);
if ($thisMember = $this->affiliatesTable->findById($this->memberID))
{ // IF get member from affiliatesTable
$this->populateData($thisMember, $this->affiliate);
}
if ($thisMember = $this->clientsTable->findById($this->memberID))
{ // IF get member from clientsTable
$this->populateData($thisMember, $this->client);
}
}
private function populateData($dataArray, $targetTable)
{
foreach ($dataArray as $key => $value)
{
$targetTable[$key] = $value;
}
}
public function saveEdit()
{
$membersTable->save($this->member);
if (isset($this->affiliate['affiliateID']))
{
$affiliatesTable->save($this->member);
}
if (isset($this->client['clientID']))
{
$clientsTable->save($this->member);
}
}
}```

我不知道为什么,但用$this->将对象属性发送到对象函数;成员没有工作,所以将函数中的参数更改为字符串并在函数中使用它实际上是按预期针对数组的:

$this->{$targetTable}[$key]=$value;

最新更新