@@ -82,7 +82,7 @@ func goArray(arr unsafe.Pointer, ordered bool) (map[string]any, []string) {
8282 v := C .get_ht_packed_data (hashTable , i )
8383 if v != nil && C .zval_get_type (v ) != C .IS_UNDEF {
8484 strIndex := strconv .Itoa (int (i ))
85- entries [strIndex ] = GoValue (v )
85+ entries [strIndex ] = goValue (v )
8686 if ordered {
8787 order = append (order , strIndex )
8888 }
@@ -98,7 +98,7 @@ func goArray(arr unsafe.Pointer, ordered bool) (map[string]any, []string) {
9898 continue
9999 }
100100
101- v := GoValue (& bucket .val )
101+ v := goValue (& bucket .val )
102102
103103 if bucket .key != nil {
104104 keyStr := GoString (unsafe .Pointer (bucket .key ))
@@ -141,7 +141,7 @@ func GoPackedArray(arr unsafe.Pointer) []any {
141141 for i := C .uint32_t (0 ); i < nNumUsed ; i ++ {
142142 v := C .get_ht_packed_data (hashTable , i )
143143 if v != nil && C .zval_get_type (v ) != C .IS_UNDEF {
144- result = append (result , GoValue (v ))
144+ result = append (result , goValue (v ))
145145 }
146146 }
147147
@@ -152,7 +152,7 @@ func GoPackedArray(arr unsafe.Pointer) []any {
152152 for i := C .uint32_t (0 ); i < nNumUsed ; i ++ {
153153 bucket := C .get_ht_bucket_data (hashTable , i )
154154 if bucket != nil && C .zval_get_type (& bucket .val ) != C .IS_UNDEF {
155- result = append (result , GoValue (& bucket .val ))
155+ result = append (result , goValue (& bucket .val ))
156156 }
157157 }
158158
@@ -176,13 +176,13 @@ func phpArray(entries map[string]any, order []string) unsafe.Pointer {
176176 zendArray = createNewArray ((uint32 )(len (order )))
177177 for _ , key := range order {
178178 val := entries [key ]
179- zval := PHPValue (val )
179+ zval := phpValue (val )
180180 C .zend_hash_str_update (zendArray , toUnsafeChar (key ), C .size_t (len (key )), zval )
181181 }
182182 } else {
183183 zendArray = createNewArray ((uint32 )(len (entries )))
184184 for key , val := range entries {
185- zval := PHPValue (val )
185+ zval := phpValue (val )
186186 C .zend_hash_str_update (zendArray , toUnsafeChar (key ), C .size_t (len (key )), zval )
187187 }
188188 }
@@ -197,7 +197,7 @@ func phpArray(entries map[string]any, order []string) unsafe.Pointer {
197197func PHPPackedArray (slice []any ) unsafe.Pointer {
198198 zendArray := createNewArray ((uint32 )(len (slice )))
199199 for _ , val := range slice {
200- zval := PHPValue (val )
200+ zval := phpValue (val )
201201 C .zend_hash_next_index_insert (zendArray , zval )
202202 }
203203
@@ -208,7 +208,11 @@ func PHPPackedArray(slice []any) unsafe.Pointer {
208208}
209209
210210// EXPERIMENTAL: GoValue converts a PHP zval to a Go value
211- func GoValue (zval * C.zval ) any {
211+ func GoValue (zval unsafe.Pointer ) any {
212+ return goValue ((* C .zval )(zval ))
213+ }
214+
215+ func goValue (zval * C.zval ) any {
212216 t := C .zval_get_type (zval )
213217
214218 switch t {
@@ -251,8 +255,12 @@ func GoValue(zval *C.zval) any {
251255 }
252256}
253257
254- // PHPValue converts a Go any to a PHP zval
255- func PHPValue (value any ) * C.zval {
258+ // EXPERIMENTAL: PHPValue converts a Go any to a PHP zval
259+ func PHPValue (value any ) unsafe.Pointer {
260+ return unsafe .Pointer (phpValue (value ))
261+ }
262+
263+ func phpValue (value any ) * C.zval {
256264 var zval C.zval
257265
258266 switch v := value .(type ) {
0 commit comments