1--TEST-- 2Property hooks in php 8.4 bodies flags 3--SKIPIF-- 4<?php if (PHP_VERSION_ID < 80400) die('skip PHP >=8.4 only'); ?> 5--FILE-- 6<?php 7require __DIR__ . '/../util.php'; 8$code = <<<'PHP' 9<?php 10class A { 11 public Generator $values { 12 #[MyAttribute] 13 get { 14 yield 123; 15 } 16 } 17} 18PHP; 19$node = ast\parse_code($code, $version=110); 20echo ast_dump($node), "\n"; 21--EXPECTF-- 22AST_STMT_LIST 23 0: AST_CLASS 24 name: "A" 25 docComment: null 26 extends: null 27 implements: null 28 stmts: AST_STMT_LIST 29 0: AST_PROP_GROUP 30 flags: MODIFIER_PUBLIC (%d) 31 type: AST_NAME 32 flags: NAME_NOT_FQ (%d) 33 name: "Generator" 34 props: AST_PROP_DECL 35 0: AST_PROP_ELEM 36 name: "values" 37 default: null 38 docComment: null 39 hooks: AST_STMT_LIST 40 0: AST_PROPERTY_HOOK 41 flags: FUNC_GENERATOR (%d) 42 name: "get" 43 docComment: null 44 params: null 45 stmts: AST_STMT_LIST 46 0: AST_YIELD 47 value: 123 48 key: null 49 attributes: AST_ATTRIBUTE_LIST 50 0: AST_ATTRIBUTE_GROUP 51 0: AST_ATTRIBUTE 52 class: AST_NAME 53 flags: NAME_NOT_FQ (%d) 54 name: "MyAttribute" 55 args: null 56 __declId: 0 57 attributes: null 58 attributes: null 59 type: null 60 __declId: 1 61