$p = new Paragraph();
$p->addChild(new HTMLNode('div')); // Silently ignored
$p->childrenCount(); // 0
public function addChild($node, $attrsOrChain = [], bool $chainOnParent = true): HTMLNode {
$nodeName = $node instanceof HTMLNode ? $node->getNodeName() : $node;
if (!in_array($nodeName, self::ALLOWED_CHILDREN) && $nodeName !== HTMLNode::TEXT_NODE) {
throw new \InvalidArgumentException(
"Element '$nodeName' is not allowed in <p>. Allowed: "
. implode(', ', self::ALLOWED_CHILDREN)
);
}
// ... proceed with add
}
Bug Description
Paragraph::addChild()silently discards elements not inALLOWED_CHILDREN. No exception, no warning — the child vanishes.Proposed Fix
Throw
InvalidArgumentExceptionlisting allowed elements:Related
HeadNode::addChild()Acceptance Criteria
InvalidArgumentExceptionwith allowed list