Bird
Raised Fist0
PHPprogramming~10 mins

__serialize and __unserialize in PHP - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define the __serialize method that returns the object's data as an array.

PHP
<?php
class User {
    private $name;
    private $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function __serialize(): array {
        return [1];
    }
}
?>
Drag options to blanks, or click blank then click option'
Aarray("name" => $this->name, "age" => $this->age)
B["name" => $this->name, "age" => $this->age]
C[$this->name, $this->age]
Dserialize($this)
Attempts:
3 left
💡 Hint
Common Mistakes
Returning a serialized string instead of an array.
Returning a numeric array without keys.
2fill in blank
medium

Complete the code to define the __unserialize method that restores the object's properties from the given data array.

PHP
<?php
class User {
    private $name;
    private $age;

    public function __unserialize(array $data): void {
        $this->name = $data[[1]];
        $this->age = $data["age"];
    }
}
?>
Drag options to blanks, or click blank then click option'
A1
B"name"
C0
D"age"
Attempts:
3 left
💡 Hint
Common Mistakes
Using numeric indexes instead of string keys.
Mixing up keys for name and age.
3fill in blank
hard

Fix the error in the __serialize method to correctly return the object's data as an array.

PHP
<?php
class Product {
    private $id;
    private $price;

    public function __serialize(): array {
        return [1];
    }
}
?>
Drag options to blanks, or click blank then click option'
Aarray("id", $this->id, "price", $this->price)
Bserialize(["id" => $this->id, "price" => $this->price])
C["id" => $this->id, "price" => $this->price]
D[$this->id, $this->price]
Attempts:
3 left
💡 Hint
Common Mistakes
Returning a serialized string instead of an array.
Returning a numeric array without keys.
4fill in blank
hard

Fill both blanks to complete the __unserialize method that restores the object's properties from the data array.

PHP
<?php
class Product {
    private $id;
    private $price;

    public function __unserialize(array $data): void {
        $this->id = $data[[1]];
        $this->price = $data[[2]];
    }
}
?>
Drag options to blanks, or click blank then click option'
A"id"
B"price"
C0
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using numeric indexes instead of string keys.
Swapping the keys for id and price.
5fill in blank
hard

Fill all three blanks to complete the class with __serialize and __unserialize methods that handle the properties correctly.

PHP
<?php
class Book {
    private $title;
    private $author;
    private $pages;

    public function __serialize(): array {
        return [[1] => $this->title, [2] => $this->author, [3] => $this->pages];
    }

    public function __unserialize(array $data): void {
        $this->title = $data["title"];
        $this->author = $data["author"];
        $this->pages = $data["pages"];
    }
}
?>
Drag options to blanks, or click blank then click option'
A"title"
B"author"
C"pages"
D"book"
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect or inconsistent keys.
Using a single key for all properties.

Practice

(1/5)
1. What is the main purpose of the __serialize method in a PHP class?
easy
A. To specify which object properties should be saved during serialization
B. To automatically convert an object to a string
C. To rebuild an object from saved data
D. To delete object properties before saving

Solution

  1. Step 1: Understand serialization

    Serialization means saving an object's data so it can be stored or sent.
  2. Step 2: Role of __serialize

    The __serialize method tells PHP which properties to save when serializing.
  3. Final Answer:

    To specify which object properties should be saved during serialization -> Option A
  4. Quick Check:

    __serialize controls saved data = A [OK]
Hint: Remember: __serialize picks what to save [OK]
Common Mistakes:
  • Confusing __serialize with __unserialize
  • Thinking __serialize rebuilds objects
  • Assuming it converts objects to strings automatically
2. Which of the following is the correct syntax for defining the __unserialize method in a PHP class?
easy
A. public function __unserialize($data)
B. function __unserialize(): array
C. private function __unserialize(array $data): string
D. public function __unserialize(array $data): void

Solution

  1. Step 1: Check method signature

    The __unserialize method must accept an array parameter and return nothing (void).
  2. Step 2: Match correct syntax

    public function __unserialize(array $data): void matches the correct signature: public function __unserialize(array $data): void.
  3. Final Answer:

    public function __unserialize(array $data): void -> Option D
  4. Quick Check:

    __unserialize signature = B [OK]
Hint: Look for array parameter and void return [OK]
Common Mistakes:
  • Missing type hint for parameter
  • Wrong return type specified
  • Using private instead of public visibility
3. What will be the output of the following PHP code?
class User {
    private string $name;
    private int $age;

    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function __serialize(): array {
        return ['name' => $this->name];
    }

    public function __unserialize(array $data): void {
        $this->name = $data['name'];
        $this->age = 0;
    }

    public function getInfo(): string {
        return "Name: {$this->name}, Age: {$this->age}";
    }
}

$user = new User('Alice', 30);
$serialized = serialize($user);
$unserialized = unserialize($serialized);
echo $unserialized->getInfo();
medium
A. Name: Alice, Age: 30
B. Name: Alice, Age: 0
C. Name: , Age: 0
D. Error: Undefined index 'name'

Solution

  1. Step 1: Analyze __serialize output

    The __serialize method returns only the 'name' property, so 'age' is not saved.
  2. Step 2: Analyze __unserialize behavior

    When unserializing, 'name' is restored from data, but 'age' is set to 0 explicitly.
  3. Final Answer:

    Name: Alice, Age: 0 -> Option B
  4. Quick Check:

    Only 'name' saved, 'age' reset = C [OK]
Hint: Check what __serialize returns and how __unserialize sets properties [OK]
Common Mistakes:
  • Assuming all properties are saved automatically
  • Expecting original age to be restored
  • Ignoring explicit age reset in __unserialize
4. Identify the error in this PHP class using __serialize and __unserialize:
class Product {
    private string $title;
    private float $price;

    public function __serialize(): array {
        return ['title' => $this->title, 'price' => $this->price];
    }

    public function __unserialize(array $data): void {
        $this->title = $data['title'];
        $this->price = $data['cost'];
    }
}
medium
A. Properties should be public for serialization
B. Missing return type in __serialize method
C. Using 'cost' key in __unserialize instead of 'price'
D. No constructor defined

Solution

  1. Step 1: Compare keys in __serialize and __unserialize

    The __serialize method saves 'price' key, but __unserialize tries to read 'cost' key.
  2. Step 2: Identify mismatch impact

    This mismatch causes an undefined index error when unserializing.
  3. Final Answer:

    Using 'cost' key in __unserialize instead of 'price' -> Option C
  4. Quick Check:

    Key mismatch in serialize/unserialize = A [OK]
Hint: Match keys exactly between __serialize and __unserialize [OK]
Common Mistakes:
  • Using different keys for same property
  • Ignoring array keys case sensitivity
  • Assuming missing keys won't cause errors
5. You want to securely save only non-sensitive user data from an object and restore it later. Which approach using __serialize and __unserialize is best?
hard
A. In __serialize, return only non-sensitive properties; in __unserialize, restore those and set sensitive ones to defaults
B. Serialize all properties automatically and trust the storage security
C. Use __serialize to encrypt all data and __unserialize to decrypt
D. Do not implement __serialize or __unserialize and rely on default serialization

Solution

  1. Step 1: Understand security needs

    Only non-sensitive data should be saved to avoid leaks.
  2. Step 2: Use __serialize and __unserialize properly

    Return only safe properties in __serialize and restore them in __unserialize, setting sensitive data to safe defaults.
  3. Final Answer:

    In __serialize, return only non-sensitive properties; in __unserialize, restore those and set sensitive ones to defaults -> Option A
  4. Quick Check:

    Selective save and safe restore = D [OK]
Hint: Save only safe data, reset sensitive on restore [OK]
Common Mistakes:
  • Saving all data without filtering
  • Assuming encryption happens automatically
  • Ignoring sensitive data in unserialize
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard