From 2a751430363a3e86417a0ef15ccb74db9edba5ec Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Tue, 7 Jul 2026 11:02:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(aot):=20=E5=A4=84=E7=90=86=E7=B1=BB?= =?UTF-8?q?=E5=B8=B8=E9=87=8F=E5=BC=95=E7=94=A8=E7=9A=84=E5=85=A8=E9=99=90?= =?UTF-8?q?=E5=AE=9A=E7=B1=BB=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gen_stub.php | 11 +++++++- .../class-const-use-in-property-default.phpt | 28 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 tests/aot/namespace/class-const-use-in-property-default.phpt diff --git a/src/gen_stub.php b/src/gen_stub.php index cdae7643..41c895ed 100755 --- a/src/gen_stub.php +++ b/src/gen_stub.php @@ -41,6 +41,15 @@ function reportFilePutContents(string $filename, string $content): void { getTranslator()->writeFile($filename, $content); } +function getClassConstFetchClassName(Expr\ClassConstFetch $expr): string +{ + $className = $expr->class->toString(); + if ($expr->class instanceof PhpParser\Node\Name\FullyQualified) { + return '\\' . $className; + } + return $className; +} + /** * @return FileInfo[] */ @@ -2339,7 +2348,7 @@ class EvaluatedValue } if ($expr instanceof Expr\ClassConstFetch) { - $class = $expr->class->toString(); + $class = getClassConstFetchClassName($expr); if ($class === 'self') { $constName = ClassInfo::$currentClass . "::" . $expr->name->__toString(); if (isset($allConstInfos[$constName])) { diff --git a/tests/aot/namespace/class-const-use-in-property-default.phpt b/tests/aot/namespace/class-const-use-in-property-default.phpt new file mode 100644 index 00000000..6864ea65 --- /dev/null +++ b/tests/aot/namespace/class-const-use-in-property-default.phpt @@ -0,0 +1,28 @@ +--TEST-- +class const from imported global class in property default +--FILE-- + PDO::FETCH_ASSOC, + ]; + } +} + +namespace { + function main() + { + $conn = new fizz\orm\db\PDOConnection(); + var_dump($conn->fetchMode === \PDO::FETCH_ASSOC); + var_dump($conn->options === [\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC]); + } +} +?> +--EXPECT-- +bool(true) +bool(true)