チェーンを使用するオブジェクトの配列を作成しようとしていますが、助けを求めて問題が発生しています。ここに私が持っているコードがあります:
$sql = new sql();
$sqlList[] = $sql->setTable('TableTest1');
$sqlList[] = $sql->setTable('TableTest2');
$sqlList[] = $sql->setTable('TableTest3');
$testDB->delete($sqlList);
SQLクラスには、次のようなsetterメソッドとgetterメソッドを持つtableというプライベート変数が含まれています。
public function setTable($setTable)
{
$this->table = $setTable;
return $this;
}
public function getTable()
{
return $this->table;
}
これをテストするために、次のように $testDB オブジェクトに単純な削除メソッドを用意しました。
public function delete($sql ,$setClear = true)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
3 つの異なる TableTest 値を含む要素を持つ配列を返すことを望んでいますが、代わりに 3 つすべてに次のように「TableTest3」の最後のエントリのみが含まれます。
Array
(
[0] => sql Object
(
[table:sql:private] => TableTest3
)
[1] => sql Object
(
[table:sql:private] => TableTest3
)
[2] => sql Object
(
[table:sql:private] => TableTest3
)
)
PHP 5.4.7 を使用しています。私は何を間違っていますか?私よりもはるかに多くの経験を持つプログラマーが、この方法を提案して、さまざまな設定の配列をステップスルーできるようにしました。これを試してコードをテストしています。私が意図したように、実際のオブジェクトのコピーではなく、配列の各エントリにオブジェクト $sql への参照を入れているようです。