@@ -839,7 +839,7 @@ public function hasProperDefaultValue(): bool {
839
839
return $ this ->defaultValue !== null && $ this ->defaultValue !== "UNKNOWN " ;
840
840
}
841
841
842
- public function getDefaultValueAsArginfoString (): string {
842
+ private function getDefaultValueAsArginfoString (): string {
843
843
if ($ this ->hasProperDefaultValue ()) {
844
844
return '" ' . addslashes ($ this ->defaultValue ) . '" ' ;
845
845
}
@@ -859,6 +859,50 @@ public function getDefaultValueAsMethodSynopsisString(): ?string {
859
859
860
860
return $ this ->defaultValue ;
861
861
}
862
+
863
+ public function toZendInfo (): string {
864
+ $ argKind = $ this ->isVariadic ? "ARG_VARIADIC " : "ARG " ;
865
+ $ argDefaultKind = $ this ->hasProperDefaultValue () ? "_WITH_DEFAULT_VALUE " : "" ;
866
+ $ argType = $ this ->type ;
867
+ if ($ argType !== null ) {
868
+ if (null !== $ simpleArgType = $ argType ->tryToSimpleType ()) {
869
+ if ($ simpleArgType ->isBuiltin ) {
870
+ return sprintf (
871
+ "\tZEND_%s_TYPE_INFO%s(%s, %s, %s, %d%s) \n" ,
872
+ $ argKind , $ argDefaultKind , $ this ->sendBy , $ this ->name ,
873
+ $ simpleArgType ->toTypeCode (), $ argType ->isNullable (),
874
+ $ this ->hasProperDefaultValue () ? ", " . $ this ->getDefaultValueAsArginfoString () : ""
875
+ );
876
+ }
877
+ return sprintf (
878
+ "\tZEND_%s_OBJ_INFO%s(%s, %s, %s, %d%s) \n" ,
879
+ $ argKind , $ argDefaultKind , $ this ->sendBy , $ this ->name ,
880
+ $ simpleArgType ->toEscapedName (), $ argType ->isNullable (),
881
+ $ this ->hasProperDefaultValue () ? ", " . $ this ->getDefaultValueAsArginfoString () : ""
882
+ );
883
+ }
884
+ $ arginfoType = $ argType ->toArginfoType ();
885
+ if ($ arginfoType ->hasClassType ()) {
886
+ return sprintf (
887
+ "\tZEND_%s_OBJ_TYPE_MASK(%s, %s, %s, %s%s) \n" ,
888
+ $ argKind , $ this ->sendBy , $ this ->name ,
889
+ $ arginfoType ->toClassTypeString (), $ arginfoType ->toTypeMask (),
890
+ !$ this ->isVariadic ? ", " . $ this ->getDefaultValueAsArginfoString () : ""
891
+ );
892
+ }
893
+ return sprintf (
894
+ "\tZEND_%s_TYPE_MASK(%s, %s, %s, %s) \n" ,
895
+ $ argKind , $ this ->sendBy , $ this ->name ,
896
+ $ arginfoType ->toTypeMask (),
897
+ $ this ->getDefaultValueAsArginfoString ()
898
+ );
899
+ }
900
+ return sprintf (
901
+ "\tZEND_%s_INFO%s(%s, %s%s) \n" ,
902
+ $ argKind , $ argDefaultKind , $ this ->sendBy , $ this ->name ,
903
+ $ this ->hasProperDefaultValue () ? ", " . $ this ->getDefaultValueAsArginfoString () : ""
904
+ );
905
+ }
862
906
}
863
907
864
908
interface VariableLikeName {
@@ -5029,51 +5073,7 @@ function funcInfoToCode(FileInfo $fileInfo, FuncInfo $funcInfo): string {
5029
5073
}
5030
5074
5031
5075
foreach ($ funcInfo ->args as $ argInfo ) {
5032
- $ argKind = $ argInfo ->isVariadic ? "ARG_VARIADIC " : "ARG " ;
5033
- $ argDefaultKind = $ argInfo ->hasProperDefaultValue () ? "_WITH_DEFAULT_VALUE " : "" ;
5034
- $ argType = $ argInfo ->type ;
5035
- if ($ argType !== null ) {
5036
- if (null !== $ simpleArgType = $ argType ->tryToSimpleType ()) {
5037
- if ($ simpleArgType ->isBuiltin ) {
5038
- $ code .= sprintf (
5039
- "\tZEND_%s_TYPE_INFO%s(%s, %s, %s, %d%s) \n" ,
5040
- $ argKind , $ argDefaultKind , $ argInfo ->sendBy , $ argInfo ->name ,
5041
- $ simpleArgType ->toTypeCode (), $ argType ->isNullable (),
5042
- $ argInfo ->hasProperDefaultValue () ? ", " . $ argInfo ->getDefaultValueAsArginfoString () : ""
5043
- );
5044
- } else {
5045
- $ code .= sprintf (
5046
- "\tZEND_%s_OBJ_INFO%s(%s, %s, %s, %d%s) \n" ,
5047
- $ argKind , $ argDefaultKind , $ argInfo ->sendBy , $ argInfo ->name ,
5048
- $ simpleArgType ->toEscapedName (), $ argType ->isNullable (),
5049
- $ argInfo ->hasProperDefaultValue () ? ", " . $ argInfo ->getDefaultValueAsArginfoString () : ""
5050
- );
5051
- }
5052
- } else {
5053
- $ arginfoType = $ argType ->toArginfoType ();
5054
- if ($ arginfoType ->hasClassType ()) {
5055
- $ code .= sprintf (
5056
- "\tZEND_%s_OBJ_TYPE_MASK(%s, %s, %s, %s%s) \n" ,
5057
- $ argKind , $ argInfo ->sendBy , $ argInfo ->name ,
5058
- $ arginfoType ->toClassTypeString (), $ arginfoType ->toTypeMask (),
5059
- !$ argInfo ->isVariadic ? ", " . $ argInfo ->getDefaultValueAsArginfoString () : ""
5060
- );
5061
- } else {
5062
- $ code .= sprintf (
5063
- "\tZEND_%s_TYPE_MASK(%s, %s, %s, %s) \n" ,
5064
- $ argKind , $ argInfo ->sendBy , $ argInfo ->name ,
5065
- $ arginfoType ->toTypeMask (),
5066
- $ argInfo ->getDefaultValueAsArginfoString ()
5067
- );
5068
- }
5069
- }
5070
- } else {
5071
- $ code .= sprintf (
5072
- "\tZEND_%s_INFO%s(%s, %s%s) \n" ,
5073
- $ argKind , $ argDefaultKind , $ argInfo ->sendBy , $ argInfo ->name ,
5074
- $ argInfo ->hasProperDefaultValue () ? ", " . $ argInfo ->getDefaultValueAsArginfoString () : ""
5075
- );
5076
- }
5076
+ $ code .= $ argInfo ->toZendInfo ();
5077
5077
}
5078
5078
5079
5079
$ code .= "ZEND_END_ARG_INFO() " ;
0 commit comments