Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中使用类的方法设置对象数组_Php_Arrays_Object - Fatal编程技术网

如何在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;
}