Skip to content

Reject class_alias() on internal classes (#9211) - #13072

Merged
PurHur merged 1 commit into
masterfrom
agent/issue-9211-class-alias-internal
Jun 28, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/issue-9211-class-alias-internal

Conversation

@PurHur

@PurHur PurHur commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • class_alias('stdClass', …) and other internal-class targets now throw ValueError with Zend-shaped message instead of registering a working alias
  • VM Context::registerClassAlias checks ClassEntry::isInternal; JIT Object_::registerClassAlias rejects externalOnlyClassIds the same way
  • php-src reference: Zend/zend_builtin_functions.c / ext/standard/basic_functions.c

Verification

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
php test/repro/maintainer_gap_class_alias_internal.php
php bin/vm.php test/repro/maintainer_gap_class_alias_internal.php
php vendor/bin/phpunit --filter class_alias_internal
'

Output (both Zend + VM):

ValueError: class_alias(): Argument #1 ($class) must be a user-defined class name, internal class name given
false

PHPUnit: OK (2 tests, 2 assertions) (VM + JIT compliance).

Closes #9211

Made with Cursor

Throw ValueError when the original class is internal in VM and JIT
registerClassAlias paths; add compliance guard and maintainer repro.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit 8b81036 into master Jun 28, 2026
@PurHur
PurHur deleted the agent/issue-9211-class-alias-internal branch June 28, 2026 07:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stdlib: class_alias() parity (Zend/zend_builtin_functions.c)

1 participant