Bird
Raised Fist0
PHPprogramming~15 mins

Destructor method in PHP - Mini Project: Build & Apply

Choose your learning style10 modes available
Destructor method
📖 Scenario: Imagine you are managing a simple library system. Each book is represented by an object. When a book object is no longer needed, it should announce that it is being removed from the system.
🎯 Goal: You will create a PHP class called Book with a destructor method that prints a message when a book object is destroyed.
📋 What You'll Learn
Create a class named Book
Add a constructor method that sets the book's title
Add a destructor method that prints a message when the object is destroyed
Create an instance of the Book class
Destroy the object to see the destructor message
💡 Why This Matters
🌍 Real World
Destructors help clean up resources or show messages when objects are no longer needed, like closing files or freeing memory.
💼 Career
Understanding destructors is important for managing resources efficiently in PHP applications, especially in web development and backend programming.
Progress0 / 4 steps
1
Create the Book class with a title property
Create a class called Book with a public property title. Add a constructor method __construct that takes one parameter $title and assigns it to the title property.
PHP
Hint

Use class Book {} to create the class. Inside, declare public string $title;. Then add public function __construct(string $title) { $this->title = $title; }.

2
Add a destructor method to the Book class
Inside the Book class, add a destructor method named __destruct that prints the message "Destroying book: " followed by the book's title and a newline.
PHP
Hint

Define public function __destruct() { echo "Destroying book: " . $this->title . "\n"; } inside the class.

3
Create a Book object with the title "PHP Basics"
Create a variable named $myBook and assign it a new Book object with the title "PHP Basics".
PHP
Hint

Write $myBook = new Book("PHP Basics"); to create the object.

4
Destroy the $myBook object to trigger the destructor
Use the unset function on the variable $myBook to destroy the object and trigger the destructor message.
PHP
Hint

Use unset($myBook); to remove the object and see the destructor message.

Practice

(1/5)
1. What is the purpose of the __destruct method in a PHP class?
easy
A. To clean up resources when an object is destroyed
B. To initialize object properties when created
C. To define a class constant
D. To handle user input validation

Solution

  1. Step 1: Understand the role of __destruct

    The __destruct method is called automatically when an object is destroyed or goes out of scope.
  2. Step 2: Identify its purpose

    It is used to clean up resources like closing files or database connections safely.
  3. Final Answer:

    To clean up resources when an object is destroyed -> Option A
  4. Quick Check:

    Destructor method = cleanup on object destruction [OK]
Hint: Destructor cleans up when object is removed from memory [OK]
Common Mistakes:
  • Confusing __destruct with __construct
  • Thinking it initializes objects
  • Using it to handle input validation
2. Which of the following is the correct syntax to declare a destructor method in PHP?
easy
A. function __destruct() {}
B. function destruct() {}
C. function _destruct() {}
D. function __destroy() {}

Solution

  1. Step 1: Recall PHP destructor naming

    PHP destructor methods must be named exactly __destruct with two underscores.
  2. Step 2: Check syntax correctness

    The correct syntax is function __destruct() {}. Other options have incorrect names.
  3. Final Answer:

    function __destruct() {} -> Option A
  4. Quick Check:

    Destructor syntax = __destruct() [OK]
Hint: Destructor always starts with double underscores __destruct [OK]
Common Mistakes:
  • Using single underscore or wrong method name
  • Omitting parentheses in method declaration
  • Confusing with __construct method
3. What will be the output of the following PHP code?
class Test {
  function __construct() {
    echo "Constructed\n";
  }
  function __destruct() {
    echo "Destructed\n";
  }
}
$obj = new Test();
echo "Hello\n";
unset($obj);
medium
A. Constructed\nDestructed\nHello\n
B. Hello\nConstructed\nDestructed\n
C. Destructed\nConstructed\nHello\n
D. Constructed\nHello\nDestructed\n

Solution

  1. Step 1: Trace object creation and constructor call

    When $obj = new Test(); runs, __construct() prints "Constructed\n".
  2. Step 2: Print "Hello" and then unset object

    Next, "Hello\n" is printed. Then unset($obj); destroys the object, triggering __destruct() which prints "Destructed\n".
  3. Final Answer:

    Constructed\nHello\nDestructed\n -> Option D
  4. Quick Check:

    Constructor then echo then destructor [OK]
Hint: Destructor runs when object is unset or script ends [OK]
Common Mistakes:
  • Assuming destructor runs before echo
  • Confusing order of constructor and destructor
  • Missing that unset triggers destructor immediately
4. Identify the error in this PHP class related to the destructor method:
class Sample {
  function __destruct {
    echo "Cleaning up";
  }
}
medium
A. Destructor must be static
B. Destructor name should be __destroy
C. Missing parentheses in destructor declaration
D. Destructor cannot echo text

Solution

  1. Step 1: Check destructor method syntax

    The destructor method must include parentheses even if it has no parameters: function __destruct() {}.
  2. Step 2: Identify the missing parentheses error

    The code misses parentheses after __destruct, causing a syntax error.
  3. Final Answer:

    Missing parentheses in destructor declaration -> Option C
  4. Quick Check:

    Destructor needs () after name [OK]
Hint: Always add () after __destruct method name [OK]
Common Mistakes:
  • Omitting parentheses in method declaration
  • Using wrong destructor name
  • Thinking destructor must be static
5. You want to ensure a file is always closed when your PHP object is destroyed. Which code snippet correctly uses a destructor to do this?
class FileHandler {
  private $file;
  function __construct($filename) {
    $this->file = fopen($filename, 'w');
  }
  // What goes here?
}
hard
A. function __destruct() { open($this->file); }
B. function __destruct() { fclose($this->file); }
C. function __destruct() { fclose($filename); }
D. function __destruct() { $this->file = null; }

Solution

  1. Step 1: Understand resource cleanup in destructor

    The destructor should close the file resource held in $this->file using fclose().
  2. Step 2: Check each option for correctness

    function __destruct() { fclose($this->file); } correctly calls fclose($this->file);. function __destruct() { open($this->file); } tries to open instead of close. function __destruct() { fclose($filename); } uses undefined $filename. function __destruct() { $this->file = null; } just sets property to null without closing.
  3. Final Answer:

    function __destruct() { fclose($this->file); } -> Option B
  4. Quick Check:

    Destructor closes file resource properly [OK]
Hint: Destructor should close resources like files with fclose() [OK]
Common Mistakes:
  • Calling wrong function like open() instead of fclose()
  • Using undefined variables inside destructor
  • Not actually closing the resource, just nullifying
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