mirror of
https://github.com/dunglas/frankenphp.git
synced 2025-12-24 13:38:11 +08:00
feat(types): expose IsPacked to help dealing with hashmaps and lists in Go code
This commit is contained in:
committed by
GitHub
parent
3599299cde
commit
7fca07ed67
@@ -212,6 +212,7 @@ func process_data_packed(arr *C.zend_array) unsafe.Pointer {
|
||||
- `frankenphp.GoAssociativeArray(arr unsafe.Pointer, ordered bool) frankenphp.AssociativeArray` - Convert a PHP array to an ordered Go `AssociativeArray` (map with order)
|
||||
- `frankenphp.GoMap(arr unsafe.Pointer) map[string]any` - Convert a PHP array to an unordered Go map
|
||||
- `frankenphp.GoPackedArray(arr unsafe.Pointer) []any` - Convert a PHP array to a Go slice
|
||||
- `frankenphp.IsPacked(zval *C.zend_array) bool` - Check if a PHP array is packed (indexed only) or associative (key-value pairs)
|
||||
|
||||
### Working with Callables
|
||||
|
||||
|
||||
@@ -209,6 +209,7 @@ func process_data_packed(arr *C.zval) unsafe.Pointer {
|
||||
- `frankenphp.GoAssociativeArray(arr unsafe.Pointer, ordered bool) frankenphp.AssociativeArray` - Convertir un tableau PHP vers un `AssociativeArray` Go ordonné (map avec ordre)
|
||||
- `frankenphp.GoMap(arr unsafe.Pointer) map[string]any` - Convertir un tableau PHP vers une map Go non ordonnée
|
||||
- `frankenphp.GoPackedArray(arr unsafe.Pointer) []any` - Convertir un tableau PHP vers un slice Go
|
||||
- `frankenphp.IsPacked(zval *C.zend_array) bool` - Vérifie si le tableau PHP est une liste ou un tableau associatif
|
||||
|
||||
### Travailler avec des Callables
|
||||
|
||||
|
||||
10
types.go
10
types.go
@@ -416,6 +416,16 @@ func createNewArray(size uint32) *C.zend_array {
|
||||
return (*C.zend_array)(unsafe.Pointer(arr))
|
||||
}
|
||||
|
||||
// IsPacked determines if the given zend_array is a packed array (list).
|
||||
// Returns false if the array is nil or not packed.
|
||||
func IsPacked(arr unsafe.Pointer) bool {
|
||||
if arr == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return htIsPacked((*C.zend_array)(arr))
|
||||
}
|
||||
|
||||
// htIsPacked checks if a zend_array is a list (packed) or hashmap (not packed).
|
||||
func htIsPacked(ht *C.zend_array) bool {
|
||||
flags := *(*C.uint32_t)(unsafe.Pointer(&ht.u[0]))
|
||||
|
||||
Reference in New Issue
Block a user