如何在PHP中使用类的方法设置对象数组
我试图创建一个对象数组,我将使用链接,我有一个问题,我希望我可以得到帮助。以下是我的代码:如何在PHP中使用类的方法设置对象数组,php,arrays,object,Php,Arrays,Object,我试图创建一个对象数组,我将使用链接,我有一个问题,我希望我可以得到帮助。以下是我的代码: $sql = new sql(); $sqlList[] = $sql->setTable('TableTest1'); $sqlList[] = $sql->setTable('TableTest2'); $sqlList[] = $sql->setTable('TableTest3'); $testDB->delete($sqlList); sql类包含一个名为table的私
$sql = new sql();
$sqlList[] = $sql->setTable('TableTest1');
$sqlList[] = $sql->setTable('TableTest2');
$sqlList[] = $sql->setTable('TableTest3');
$testDB->delete($sqlList);
sql类包含一个名为table的私有变量,该变量具有如下setter和getter方法:
public function setTable($setTable)
{
$this->table = $setTable;
return $this;
}
public function getTable()
{
return $this->table;
}
public function delete($sql ,$setClear = true)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$sql = new sql();
public function setTable($setTable)
{
$class=__CLASS__;
$obj=new $class;
$obj->table=$setTable;
return $obj;
}
为了测试这一点,我在$testDB对象中有一个简单的delete方法,如下所示:
public function setTable($setTable)
{
$this->table = $setTable;
return $this;
}
public function getTable()
{
return $this->table;
}
public function delete($sql ,$setClear = true)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$sql = new sql();
public function setTable($setTable)
{
$class=__CLASS__;
$obj=new $class;
$obj->table=$setTable;
return $obj;
}
我使用的是PHP5.4.7。
我做错了什么?一位比我经验丰富得多的程序员建议使用这种方法,以便能够进行一系列不同的设置,我正在尝试使用这种方法来测试我的代码。在我看来,它似乎是在数组的每个条目中放置对对象$sql的引用,而不是我想要的实际对象的副本 您只有“一个”对象,是在创建时创建的
$sql = new sql();
$sqlList[] = $sql->setTable('TableTest1');
$sql = new sql();
$sqlList[] = $sql->setTable('TableTest2');
$sql = new sql();
$sqlList[] = $sql->setTable('TableTest3');
$testDB->delete($sqlList);
您刚刚更改了私有$table变量三次。您需要三个$sql对象,每个对象都被设置到各自的表中。类似于:
public function setTable($setTable)
{
$this->table = $setTable;
return $this;
}
$sqlList[] = $sql->setTable('TableTest1');
$sqlList[] = $sql->setTable('TableTest2');
$sqlList[] = $sql->setTable('TableTest3');
您的
可设置的方法如下所示:
public function setTable($setTable)
{
$this->table = $setTable;
return $this;
}
public function getTable()
{
return $this->table;
}
public function delete($sql ,$setClear = true)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$sql = new sql();
public function setTable($setTable)
{
$class=__CLASS__;
$obj=new $class;
$obj->table=$setTable;
return $obj;
}
$sqlList
中的所有三个“元素”都只是$sql
如果您想在setable
上创建一个新实例,可以尝试以下方法:
public function setTable($setTable)
{
$this->table = $setTable;
return $this;
}
public function getTable()
{
return $this->table;
}
public function delete($sql ,$setClear = true)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$sql = new sql();
public function setTable($setTable)
{
$class=__CLASS__;
$obj=new $class;
$obj->table=$setTable;
return $obj;
}