'1', 'key2' => (object) [ 'key21' => [ '211', '212', (object) [ '2111' => '1', ], ], ], 'key3' => [ '31', '32', null, ], 'key4' => null, ]; $cloned = ObjectUtil::clone($original); $this->assertEquals($cloned, $original); $this->assertNotSame($cloned, $original); $this->assertNotSame($cloned->key2, $original->key2); $this->assertNotSame($cloned->key2->key21[2], $original->key2->key21[2]); } }