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));