Сравнение клонируемых объектов
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
просмотров: 808