PHP-通过克隆复制类-这是有错误的还是我做得不对?
请向我解释为什么会出现这种代码:PHP-通过克隆复制类-这是有错误的还是我做得不对?,php,object,binding,mysqli,Php,Object,Binding,Mysqli,请向我解释为什么会出现这种代码: class kategoria { public $IdKat; public $NazwaKat; public $OpisKat; } class dbClass { private $link; private $user = USER; private $pass = PASS; privat
class kategoria
{
public $IdKat;
public $NazwaKat;
public $OpisKat;
}
class dbClass
{
private $link;
private $user = USER;
private $pass = PASS;
private $database = DATABASE;
function __construct()
{
try
{
$this->link = new mysqli('localhost', $this->user, $this->pass, $this->database);
$this->link->set_charset('utf8');
;
}
catch(Exception $exc)
{
echo $e;
}
}
function get_cats()
{
$query = "SELECT IdKat, NazwaKat, OpisKat FROM `kategorie`";
try
{
$stmt = $this->link->prepare($query);
/* bind parameters for markers */
//$stmt->bind_param("i", $IdKat);
$stmt->execute();
$kat = new kategoria();
$stmt->bind_result(
$kat->IdKat,
$kat->NazwaKat,
$kat->OpisKat
);
$output = array();
$output2 = array();
while ($stmt->fetch()) {
array_push($output, $kat->IdKat);
array_push($output2, $kat);
// array_push($output2, clone $kat); // i tried cloning like this
// $output2 += array(clone($kat)); // tried adding
}
$stmt->close();
}
catch (Exception $e)
{
echo $e;
}
echo '<pre>';
print_r($output);
echo '</pre>';
echo '--------------------------<br/>';
echo '<pre>';
print_r($output2);
echo '</pre>';
}
}
这是我的第二个问题。我尝试添加数组,克隆对象$kat,但没有成功。最后,我制作了另一个数组,我使用这两个数组进行调试
看起来很奇怪。我不明白为什么数组中的克隆对象在下一行获取后被覆盖。它应该是他的克隆人的副本,对吗?我在PHP帮助中找到了答案。我必须像这样创建深度副本:
因为我相信帮助说明:任何引用其他变量的属性都将保留引用。我在PHP帮助中找到了答案。我必须像这样创建深度副本:
因为我相信帮助会说:任何引用其他变量的属性都将保留引用。这里的大问题是,为什么使用bind_result,而您可以使用fetch_object创建单个对象。也许这是错误的方法,我在MySQL/PHP编程方面没有经验。我试着用更现代的方法。我在MySQL帮助中读过关于绑定结果的内容。这里最大的问题是为什么使用bind_result,而您可以使用fetch_object创建单个对象。也许这是错误的方法,我在MySQL/PHP编程方面没有经验。我试着用更现代的方法。我已经在MySQL帮助中了解了绑定结果。
Array (
[0] => 2
[1] => 3
[2] => 4 )
--------------------------
Array (
[0] => kategoria Object
(
[IdKat] => 4
[NazwaKat] => Hi-Fi
[OpisKat] => Music equipment
)
[1] => kategoria Object
(
[IdKat] => 4
[NazwaKat] => Hi-Fi
[OpisKat] => Music equipment
)
[2] => kategoria Object
(
[IdKat] => 4
[NazwaKat] => Hi-Fi
[OpisKat] => Music equipment
)
)
$clone = unserialize(serialize($object));