@@ -395,6 +395,11 @@ public function toEscapedName(): string {
395
395
return str_replace ('\\' , '\\\\' , $ this ->name );
396
396
}
397
397
398
+ public function toCVarEscapedName (): string {
399
+ $ name = str_replace ('_ ' , '__ ' , $ this ->name );
400
+ return str_replace ('\\' , '_ ' , $ this ->name );
401
+ }
402
+
398
403
public function equals (SimpleType $ other ): bool {
399
404
return $ this ->name === $ other ->name && $ this ->isBuiltin === $ other ->isBuiltin ;
400
405
}
@@ -1374,7 +1379,9 @@ public function getDeclaration(): string {
1374
1379
if (count ($ arginfoType ->classTypes ) >= 2 ) {
1375
1380
foreach ($ arginfoType ->classTypes as $ classType ) {
1376
1381
$ className = $ classType ->name ;
1377
- $ code .= "\tzend_string *property_ {$ propertyName }_class_ {$ className } = zend_string_init( \"$ className \", sizeof( \"$ className \") - 1, 1); \n" ;
1382
+ $ escapedClassName = $ classType ->toEscapedName ();
1383
+ $ varEscapedClassName = $ classType ->toCVarEscapedName ();
1384
+ $ code .= "\tzend_string *property_ {$ propertyName }_class_ {$ varEscapedClassName } = zend_string_init( \"{$ escapedClassName }\", sizeof( \"{$ escapedClassName }\") - 1, 1); \n" ;
1378
1385
}
1379
1386
1380
1387
$ classTypeCount = count ($ arginfoType ->classTypes );
@@ -1383,7 +1390,8 @@ public function getDeclaration(): string {
1383
1390
1384
1391
foreach ($ arginfoType ->classTypes as $ k => $ classType ) {
1385
1392
$ className = $ classType ->name ;
1386
- $ code .= "\tproperty_ {$ propertyName }_type_list->types[ $ k] = (zend_type) ZEND_TYPE_INIT_CLASS(property_ {$ propertyName }_class_ {$ className }, 0, 0); \n" ;
1393
+ $ escapedClassName = $ classType ->toEscapedName ();
1394
+ $ code .= "\tproperty_ {$ propertyName }_type_list->types[ $ k] = (zend_type) ZEND_TYPE_INIT_CLASS(property_ {$ propertyName }_class_ {$ escapedClassName }, 0, 0); \n" ;
1387
1395
}
1388
1396
1389
1397
$ typeMaskCode = $ this ->type ->toArginfoType ()->toTypeMask ();
@@ -1392,9 +1400,11 @@ public function getDeclaration(): string {
1392
1400
$ typeCode = "property_ {$ propertyName }_type " ;
1393
1401
} else {
1394
1402
$ className = $ arginfoType ->classTypes [0 ]->name ;
1395
- $ code .= "\tzend_string *property_ {$ propertyName }_class_ {$ className } = zend_string_init( \"$ className \", sizeof( \"$ className \")-1, 1); \n" ;
1403
+ $ escapedClassName = $ arginfoType ->classTypes [0 ]->toEscapedName ();
1404
+ $ varEscapedClassName = $ arginfoType ->classTypes [0 ]->toCVarEscapedName ();
1405
+ $ code .= "\tzend_string *property_ {$ propertyName }_class_ {$ varEscapedClassName } = zend_string_init( \"{$ escapedClassName }\", sizeof( \"$ {escapedClassName}\")-1, 1); \n" ;
1396
1406
1397
- $ typeCode = "(zend_type) ZEND_TYPE_INIT_CLASS(property_ {$ propertyName }_class_ {$ className }, 0, " . $ arginfoType ->toTypeMask () . ") " ;
1407
+ $ typeCode = "(zend_type) ZEND_TYPE_INIT_CLASS(property_ {$ propertyName }_class_ {$ varEscapedClassName }, 0, " . $ arginfoType ->toTypeMask () . ") " ;
1398
1408
}
1399
1409
} else {
1400
1410
$ typeCode = "(zend_type) ZEND_TYPE_INIT_MASK( " . $ arginfoType ->toTypeMask () . ") " ;
0 commit comments