Skip to content

Stdlib: debug_zval_dump() anonymous class shows internal NUL suffix (ext/standard/var.c) #17450

Closed

Description

@PurHur

Category

stdlib · php-src-strict

Problem

debug_zval_dump() on anonymous class objects prints the internal class@anonymous\0<file>:<line>$<id> name instead of Zend's class@anonymous label (same gap as #17444 for var_dump/print_r).

Repro Zend 8.2 VM
debug_zval_dump(new class {}) header object(class@anonymous)#N object(class@anonymous\0...

php-src reference

  • Zend/zend_builtin_functions.c — zif_debug_zval_dump uses ZSTR_CLASS_ANONYMOUS for anon classes

PHP implementation target

  • ext/standard/VmDebugZval.php — VmObjectDebugType::fromClassName() on object header

Repro

php -r '$o=new class{}; debug_zval_dump($o);'
php bin/vm.php -r '$o=new class{}; debug_zval_dump($o);'

Done when

  • VM header matches Zend (no NUL in output)
  • Compliance .phpt guard

Activity

  1. added
    phase-4:stdlibPhase 4 – stdlib for web apps
    area:vmVirtual machine
    implementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claim
    on Jul 8, 2026
  2. PurHur commented on Jul 8, 2026

    @PurHur
    OwnerAuthor

    claim: cursor-agent-lane-a — starting this run

  3. PurHur commented on Jul 8, 2026

    @PurHur
    OwnerAuthor

    Merged via #17451

    Fix: VmDebugZval::dumpObject() now uses VmObjectDebugType::fromClassName() for object headers (same helper as #17444 for var_dump/print_r).

    Verification:

    • php test/repro/maintainer_gap_debug_zval_dump_anonymous_class.php — ok
    • php bin/vm.php test/repro/maintainer_gap_debug_zval_dump_anonymous_class.php — ok
    • vendor/bin/phpunit test/compliance/VMTest.php --filter debug_zval_dump_anonymous_class — OK (1 test)

    Anonymous objects now print object(class@anonymous)#N on VM, matching Zend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:vmVirtual machineimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimphase-4:stdlibPhase 4 – stdlib for web appsstdlib

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions