Сравнение клонируемых объектов

class Z1Class
{
    var $arr = [];
    var $sizeArray = 5;

    public function __construct()
    {
        $this->arr = $this->NewRandAssociationArray();
    }

    function NewRandAssociationArray() // функция генерации ассоциативного массива, по умолчанию с 5-ть записями
    {
        $newArray = array(); // создадим пустой массив
        $strForKey = '1234567890qwertyuiopasdfghjklzxcvbnm'; // набор символов для генерации ключа массива
        while (count($newArray) < $this->sizeArray) { // если меньше $sizeArray то выполняем цикл
            // заполним массив случайными числами и ключами в цикле
            $var = rand(0, 100); // получаем случайное число для ключа от 0 до 100
            $key = $strForKey[rand(0, strlen($strForKey))] . $strForKey[rand(0, strlen($strForKey))] . $strForKey[rand(0, strlen($strForKey))]; // создаем ключ из трех случайных символов из $strForKey
            if ((in_array($var, $newArray) === false) && (array_key_exists($key, $newArray)) === false) { // если такого значения и ключа еще нет в массиве, то добавим запись в массив
                $newArray[$key] = $var;
            }
        }
        $this->arr = $newArray;
        return $this->arr;
    }

    public function getArr(): array
    {
        return $this->arr;
    }
}

$z1 = new Z1Class(); // создали новый объект
var_dump($z1); // дамп первого объекта

$z1_clone = clone $z1; // создали клон объекта
var_dump($z1_clone); // дамп второго объекта

var_dump($z1 == $z1_clone); // bool(true) - содержание объектов одинаковое
var_dump($z1 === $z1_clone); // bool(false) - содержание объектов одинаковое, НО сами объекты разные "object(Z1Class)#1" <> "object(Z1Class)#2"

$z1_clone->sizeArray = 4; // изменение размера генерируемого массива
$z1_clone->NewRandAssociationArray(); // создание нового массива

var_dump($z1_clone);

var_dump($z1 == $z1_clone); // bool(false) содержание разное
var_dump($z1 === $z1_clone); // bool(false) и сами объекты разные
object(Z1Class)#1 (2) {
  ["arr"]=>
  array(5) {
    ["ndx"]=>
    int(77)
    ["aql"]=>
    int(29)
    ["pll"]=>
    int(1)
    ["c64"]=>
    int(55)
    ["43b"]=>
    int(76)
  }
  ["sizeArray"]=>
  int(5)
}
object(Z1Class)#2 (2) {
  ["arr"]=>
  array(5) {
    ["ndx"]=>
    int(77)
    ["aql"]=>
    int(29)
    ["pll"]=>
    int(1)
    ["c64"]=>
    int(55)
    ["43b"]=>
    int(76)
  }
  ["sizeArray"]=>
  int(5)
}
bool(true)
bool(false)
object(Z1Class)#2 (2) {
  ["arr"]=>
  array(4) {
    ["2pt"]=>
    int(44)
    ["y4r"]=>
    int(70)
    ["t47"]=>
    int(9)
    ["zsh"]=>
    int(1)
  }
  ["sizeArray"]=>
  int(4)
}
bool(false)
bool(false)

php class == === clone

просмотров: 224