1Invalid modifier combination 2----- 3<?php class A { public public $a; } 4----- 5Multiple access type modifiers are not allowed from 1:24 to 1:29 6array( 7 0: Stmt_Class( 8 attrGroups: array( 9 ) 10 flags: 0 11 name: Identifier( 12 name: A 13 ) 14 extends: null 15 implements: array( 16 ) 17 stmts: array( 18 0: Stmt_Property( 19 attrGroups: array( 20 ) 21 flags: PUBLIC (1) 22 type: null 23 props: array( 24 0: PropertyItem( 25 name: VarLikeIdentifier( 26 name: a 27 ) 28 default: null 29 ) 30 ) 31 ) 32 ) 33 ) 34) 35----- 36<?php class A { public protected $a; } 37----- 38Multiple access type modifiers are not allowed from 1:24 to 1:32 39array( 40 0: Stmt_Class( 41 attrGroups: array( 42 ) 43 flags: 0 44 name: Identifier( 45 name: A 46 ) 47 extends: null 48 implements: array( 49 ) 50 stmts: array( 51 0: Stmt_Property( 52 attrGroups: array( 53 ) 54 flags: PUBLIC | PROTECTED (3) 55 type: null 56 props: array( 57 0: PropertyItem( 58 name: VarLikeIdentifier( 59 name: a 60 ) 61 default: null 62 ) 63 ) 64 ) 65 ) 66 ) 67) 68----- 69<?php class C { readonly readonly $a; } 70----- 71Multiple readonly modifiers are not allowed from 1:26 to 1:33 72array( 73 0: Stmt_Class( 74 attrGroups: array( 75 ) 76 flags: 0 77 name: Identifier( 78 name: C 79 ) 80 extends: null 81 implements: array( 82 ) 83 stmts: array( 84 0: Stmt_Property( 85 attrGroups: array( 86 ) 87 flags: READONLY (64) 88 type: null 89 props: array( 90 0: PropertyItem( 91 name: VarLikeIdentifier( 92 name: a 93 ) 94 default: null 95 ) 96 ) 97 ) 98 ) 99 ) 100) 101----- 102<?php class A { abstract abstract function a(); } 103----- 104Multiple abstract modifiers are not allowed from 1:26 to 1:33 105array( 106 0: Stmt_Class( 107 attrGroups: array( 108 ) 109 flags: 0 110 name: Identifier( 111 name: A 112 ) 113 extends: null 114 implements: array( 115 ) 116 stmts: array( 117 0: Stmt_ClassMethod( 118 attrGroups: array( 119 ) 120 flags: ABSTRACT (16) 121 byRef: false 122 name: Identifier( 123 name: a 124 ) 125 params: array( 126 ) 127 returnType: null 128 stmts: null 129 ) 130 ) 131 ) 132) 133----- 134<?php class A { static static $a; } 135----- 136Multiple static modifiers are not allowed from 1:24 to 1:29 137array( 138 0: Stmt_Class( 139 attrGroups: array( 140 ) 141 flags: 0 142 name: Identifier( 143 name: A 144 ) 145 extends: null 146 implements: array( 147 ) 148 stmts: array( 149 0: Stmt_Property( 150 attrGroups: array( 151 ) 152 flags: STATIC (8) 153 type: null 154 props: array( 155 0: PropertyItem( 156 name: VarLikeIdentifier( 157 name: a 158 ) 159 default: null 160 ) 161 ) 162 ) 163 ) 164 ) 165) 166----- 167<?php class A { final final function a() {} } 168----- 169Multiple final modifiers are not allowed from 1:23 to 1:27 170array( 171 0: Stmt_Class( 172 attrGroups: array( 173 ) 174 flags: 0 175 name: Identifier( 176 name: A 177 ) 178 extends: null 179 implements: array( 180 ) 181 stmts: array( 182 0: Stmt_ClassMethod( 183 attrGroups: array( 184 ) 185 flags: FINAL (32) 186 byRef: false 187 name: Identifier( 188 name: a 189 ) 190 params: array( 191 ) 192 returnType: null 193 stmts: array( 194 ) 195 ) 196 ) 197 ) 198) 199----- 200<?php class A { abstract final function a(); } 201----- 202Cannot use the final modifier on an abstract class member from 1:26 to 1:30 203array( 204 0: Stmt_Class( 205 attrGroups: array( 206 ) 207 flags: 0 208 name: Identifier( 209 name: A 210 ) 211 extends: null 212 implements: array( 213 ) 214 stmts: array( 215 0: Stmt_ClassMethod( 216 attrGroups: array( 217 ) 218 flags: ABSTRACT | FINAL (48) 219 byRef: false 220 name: Identifier( 221 name: a 222 ) 223 params: array( 224 ) 225 returnType: null 226 stmts: null 227 ) 228 ) 229 ) 230) 231----- 232<?php abstract final class A { } 233----- 234Cannot use the final modifier on an abstract class from 1:16 to 1:20 235array( 236 0: Stmt_Class( 237 attrGroups: array( 238 ) 239 flags: ABSTRACT | FINAL (48) 240 name: Identifier( 241 name: A 242 ) 243 extends: null 244 implements: array( 245 ) 246 stmts: array( 247 ) 248 ) 249) 250----- 251<?php class B { abstract $b; } 252----- 253Properties cannot be declared abstract from 1:17 to 1:24 254array( 255 0: Stmt_Class( 256 attrGroups: array( 257 ) 258 flags: 0 259 name: Identifier( 260 name: B 261 ) 262 extends: null 263 implements: array( 264 ) 265 stmts: array( 266 0: Stmt_Property( 267 attrGroups: array( 268 ) 269 flags: ABSTRACT (16) 270 type: null 271 props: array( 272 0: PropertyItem( 273 name: VarLikeIdentifier( 274 name: b 275 ) 276 default: null 277 ) 278 ) 279 ) 280 ) 281 ) 282) 283----- 284<?php class A { final $a; } 285----- 286Properties cannot be declared final from 1:17 to 1:21 287array( 288 0: Stmt_Class( 289 attrGroups: array( 290 ) 291 flags: 0 292 name: Identifier( 293 name: A 294 ) 295 extends: null 296 implements: array( 297 ) 298 stmts: array( 299 0: Stmt_Property( 300 attrGroups: array( 301 ) 302 flags: FINAL (32) 303 type: null 304 props: array( 305 0: PropertyItem( 306 name: VarLikeIdentifier( 307 name: a 308 ) 309 default: null 310 ) 311 ) 312 ) 313 ) 314 ) 315) 316