Core Function Serialize

From Sputnik Wiki
Jump to: navigation, search
Serialize( <variable> )

Contents

Description

Convert a variable, array, class etc a string you can save to file or transfer over the internet.

Parameters

variable

The variable to serialize.

Return Value

Success: Returns serialized variable.

Failure: Returns null.

Remarks

This can be used as a very fast effective way to dump arrays/classes to a file and read it back later.

It is faster than the JSON stuff however it is not as portable and will only work within Sputnik.

To read this in another language you would need to first read it into Sputnik then dump it as JSON.

It is worth noting that Sputniks serializer has been *finalized* and will not change in the future however new data types may be added to it making older versions of Sputnik unable to unserialize something from a newer version.

The serializer in Sputnik shares some similarities with the one with PHP in terms of how it lays out the value this means simple types like *String* may convert to PHP but more complex types like Arrays etc will not.

If you are unserializing a string that contains a class and a class with that name cannot be located it will create an instance of IncompleteClass instead you can check for this by doing:

IsVarClass($a, 'IncompleteClass');

Example

Serialize a string

// Make a value
$a = "Hello";
// Serialize it
my $s = Serialize($a);
// Print the serialized
say $s;
// PRINTS
// p:5:"Hello";
 
// Unserialize is
my $b = Unserialize($s);
// Print it
say $b;
// PRINTS
// Hello

Serialize a number

// Make a value
$a = 777;
// Serialize it
my $s = Serialize($a);
// Print the serialized
say $s;
// PRINTS
// l:777;
 
// Unserialize is
my $b = Unserialize($s);
// Print it
say $b;
// PRINTS
// 777

Serialize an array

// Make an array
// Note - You could include multiple arrays inside arrays and so on
$a = array(100, "Cat", "Dog");
// Serialize it
my $s = Serialize($a);
// Print the serialized
say $s;
// PRINTS
// a:l:3;l:0;l:3;i:0;:{l:0;l:100;l:1;p:3:"Cat";l:2;p:3:"Dog";}
 
// Unserialize is
my $b = Unserialize($s);
// Print it
printr $b;
// PRINTS
// Array
// (
//     [0] => 100
//     [1] => Cat
//     [2] => Dog
// )

Serialize a class

// Make a Class
Class Test
{
	my $cat;
	my $dog;
	// This function is called when you create a class
	Function __Construct($catGoes, $dogGoes)
	{
		$cat = $catGoes;
		$dog = $dogGoes;
		say "Class 'Test' made";
	}
	// This function is called when you serialize a class
	Function __Sleep()
	{
		say "Class 'Test' sleeps";
	}
	// This function is called when you unserialize a class
	Function __WakeUp()
	{
		say "Class 'Test' woken up";
	}
};
// Create class instance
$a = new Test('meow', 'woof');
// Serialize it
my $s = Serialize($a);
// Print the serialized
say $s;
// PRINTS
// oc:p:4:"test";{a:l:2;l:0;l:0;i:2;:{p:3:"cat";p:4:"meow";p:3:"dog";p:4:"woof";}}
 
// Unserialize is
my $b = Unserialize($s);
// Print it
printr $b;
// PRINTS
// test Class
// (
//     [cat] => meow
//     [dog] => woof
// )
 
// Lets double check it worked by calling the classes variables
say "Cat goes? : " . $b->$cat;
say "Dog goes? : " . $b->$dog;
 
// PRINTS
// Cat goes? : meow
// Dog goes? : woof
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox