Skip to content

Commit 106271b

Browse files
committed
Merge pull request yvasiyarov#14 from eerakli/master
Add new type PhpSlice to save order when we serialize "array"
2 parents 2c23231 + 9913036 commit 106271b

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

php_serialize/common.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ type PhpValue interface{}
4747

4848
type PhpArray map[PhpValue]PhpValue
4949

50+
type PhpSlice []PhpValue
51+
5052
type PhpObject struct {
5153
className string
5254
members PhpArray

php_serialize/serialize.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func (self *Serializer) Encode(v PhpValue) (string, error) {
3939
value = self.encodeNumber(v)
4040
case string:
4141
value = self.encodeString(v, DELIMITER_STRING_LEFT, DELIMITER_STRING_RIGHT, true)
42-
case PhpArray, map[PhpValue]PhpValue:
42+
case PhpArray, map[PhpValue]PhpValue, PhpSlice:
4343
value = self.encodeArray(v, true)
4444
case *PhpObject:
4545
value = self.encodeObject(v)
@@ -183,6 +183,19 @@ func (self *Serializer) encodeArray(v PhpValue, isFinal bool) (buffer bytes.Buff
183183
buffer.WriteString(self.prepareLen(arrLen))
184184
buffer.WriteRune(DELIMITER_OBJECT_LEFT)
185185

186+
for k, v := range arrVal {
187+
s, _ = self.Encode(k)
188+
buffer.WriteString(s)
189+
s, _ = self.Encode(v)
190+
buffer.WriteString(s)
191+
}
192+
case PhpSlice:
193+
arrVal, _ := v.(PhpSlice)
194+
arrLen = len(arrVal)
195+
196+
buffer.WriteString(self.prepareLen(arrLen))
197+
buffer.WriteRune(DELIMITER_OBJECT_LEFT)
198+
186199
for k, v := range arrVal {
187200
s, _ = self.Encode(k)
188201
buffer.WriteString(s)

0 commit comments

Comments
 (0)