Skip to content

PHP 8.4 classList works not correctly if copy HTMLElement by clone keyword. #18744

Closed
@asika32764

Description

@asika32764

Description

The following code:

<?php
$doc = \Dom\HTMLDocument::createEmpty();
$ele1 = $doc->createElement('div');
$ele1->classList->add('foo');
$ele2 = clone $ele1;
$ele2->classList->add('bar');

echo "Element1 class: " . $ele1->getAttribute('class');
echo "\n";
echo "Element2 class: " . $ele2->getAttribute('class');

Resulted in this output:

Element1 class: foo bar
Element2 class: foo

But I expected this output instead:

Element1 class: foo
Element2 class: foo bar

3v4l.org: https://3v4l.org/eaosZ#v8.4.7

If try to clone classList will raise an error:

Fatal error: Uncaught Error: Trying to clone an uncloneable object of class Dom\TokenList

But $ele2 = $ele->cloneNode(true) works.

PHP Version

PHP 8.4.7 (cli) (built: May  6 2025 14:14:22) (NTS Visual C++ 2022 x64)
Copyright (c) The PHP Group
Zend Engine v4.4.7, Copyright (c) Zend Technologie

Operating System

Windows 11 and 3v4l.org

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions