What is the purpose of the __construct method in PHP classes?
The <code>__construct</code> method is a special function called automatically when a new object of a class is created. It is used to initialize the object's properties or run setup code.
Click to reveal answer
beginner
What does the __destruct method do in a PHP class?
The __destruct method is called automatically when an object is destroyed or the script ends. It is used to clean up resources like closing files or database connections.
Click to reveal answer
beginner
When exactly is the __construct method called?
It is called right after an object is created with the new keyword, before any other methods are used on the object.
Click to reveal answer
intermediate
Can a PHP class have multiple <code>__construct</code> methods?
No, a PHP class can only have one <code>__construct</code> method. To handle different ways of creating objects, you can use optional parameters or method overloading techniques.
Click to reveal answer
beginner
Give a simple example of a PHP class using <code>__construct</code> and <code>__destruct</code>.
Example:<br><pre>class Car {
public function __construct() {
echo "Car created!\n";
}
public function __destruct() {
echo "Car destroyed!\n";
}
}
$myCar = new Car();</pre>
Click to reveal answer
What keyword triggers the __construct method in PHP?
Acreate
Bstart
Cinit
Dnew
✗ Incorrect
The new keyword creates a new object and automatically calls the __construct method.
When is the __destruct method called?
AWhen the object is created
BWhen the object is destroyed or script ends
CWhen a method is called
DWhen a property is accessed
✗ Incorrect
The __destruct method runs when the object is destroyed or the script finishes.
Can a PHP class have more than one __construct method?
ANo, only one constructor is allowed
BYes, multiple constructors are allowed
CYes, but only if they have different names
DNo, constructors are not allowed
✗ Incorrect
PHP allows only one __construct method per class.
What is a common use of the __destruct method?
ATo initialize object properties
BTo create new objects
CTo clean up resources like files or connections
DTo print messages when object is created
✗ Incorrect
__destruct is used to clean up resources before the object is removed.
Which of these is true about __construct?
AIt runs automatically after object creation
BIt runs only when called explicitly
CIt runs when the object is destroyed
DIt runs before the class is defined
✗ Incorrect
__construct runs automatically right after an object is created.
Explain in your own words what __construct and __destruct methods do in PHP classes.
Think about what happens when you get a new item and when you throw it away.
You got /4 concepts.
Describe a simple real-life example where you might use both __construct and __destruct in a PHP class.
Imagine borrowing a book and returning it.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of the __construct method in a PHP class?
easy
A. To pause the program execution
B. To delete an object from memory
C. To print the object details
D. To initialize an object when it is created
Solution
Step 1: Understand the role of __construct
The __construct method is automatically called when a new object is created from a class.
Step 2: Identify its purpose
It is used to set up or initialize the object, like setting initial values or preparing resources.
Final Answer:
To initialize an object when it is created -> Option D
Quick Check:
__construct = initialize object [OK]
Hint: Constructor runs at object creation to set it up [OK]
Common Mistakes:
Confusing __construct with __destruct
Thinking __construct deletes objects
Assuming __construct prints output
2. Which of the following is the correct syntax to define a destructor method in a PHP class?
easy
A. function __destruct() {}
B. function destruct() {}
C. function __delete() {}
D. function destructor() {}
Solution
Step 1: Recall PHP destructor syntax
PHP uses the special method named __destruct with two underscores to define destructors.
Step 2: Match the correct syntax
The correct syntax is function __destruct() {}. Other options are invalid method names for destructors.
Final Answer:
function __destruct() {} -> Option A
Quick Check:
Destructor syntax = __destruct() [OK]
Hint: Destructor method always named __destruct() with double underscores [OK]
Common Mistakes:
Using single underscore or wrong method name
Forgetting parentheses in method definition
Confusing destructor with constructor syntax
3. What will be the output of the following PHP code?
class Test {
function __construct() {
echo "Start ";
}
function __destruct() {
echo "End";
}
}
$obj = new Test();
echo "Middle ";
medium
A. Middle Start End
B. Start End Middle
C. Start Middle End
D. End Start Middle
Solution
Step 1: Trace constructor execution
When $obj = new Test(); runs, __construct prints "Start ".
Step 2: Trace echo after object creation
Next, echo "Middle "; prints "Middle ".
Step 3: Understand destructor timing
Destructor __destruct runs when script ends or object is destroyed, printing "End" last.
Final Answer:
Start Middle End -> Option C
Quick Check:
Constructor -> echo -> Destructor = Start Middle End [OK]
Hint: Constructor prints first, destructor last after script ends [OK]
Common Mistakes:
Assuming destructor runs immediately after constructor
Mixing order of printed words
Forgetting destructor runs at script end
4. Identify the error in this PHP class code:
class Sample {
function __construct {
echo "Hello";
}
function __destruct() {
echo "Goodbye";
}
}
$obj = new Sample();
medium
A. Destructor method name is incorrect
B. Missing parentheses in __construct method definition
C. Class name must be capitalized
D. Missing semicolon after echo statements
Solution
Step 1: Check constructor syntax
The __construct method is missing parentheses () after its name, which is required in PHP.
Step 2: Verify other parts
The destructor name and syntax are correct, class name capitalization is not mandatory, and echo statements have semicolons.
Final Answer:
Missing parentheses in __construct method definition -> Option B
Quick Check:
Constructor needs () after name [OK]
Hint: Always add () after method names, even if no parameters [OK]
Common Mistakes:
Omitting parentheses in method definitions
Thinking destructor name is wrong
Believing class names must be capitalized
5. You want to create a PHP class that opens a file when an object is created and closes it automatically when the object is destroyed. Which code snippet correctly uses __construct and __destruct for this purpose?
hard
A. class FileHandler {
private $file;
function __construct($filename) {
$this->file = fopen($filename, 'r');
}
function __destruct() {
fclose($this->file);
}
}
B. class FileHandler {
private $file;
function __construct() {
fclose($this->file);
}
function __destruct() {
$this->file = fopen('file.txt', 'r');
}
}
C. class FileHandler {
function __construct($filename) {
fclose($filename);
}
function __destruct() {
fopen($filename, 'r');
}
}
D. class FileHandler {
private $file;
function __construct($filename) {
$this->file = fopen($filename, 'r');
}
function __destruct() {
echo 'File closed';
}
}
Solution
Step 1: Analyze constructor for opening file
class FileHandler {
private $file;
function __construct($filename) {
$this->file = fopen($filename, 'r');
}
function __destruct() {
fclose($this->file);
}
} correctly opens the file with fopen and stores the handle in $this->file.
Step 2: Analyze destructor for closing file
class FileHandler {
private $file;
function __construct($filename) {
$this->file = fopen($filename, 'r');
}
function __destruct() {
fclose($this->file);
}
} correctly closes the file using fclose($this->file) in the destructor, ensuring cleanup.
Step 3: Check other options for errors
class FileHandler {
private $file;
function __construct() {
fclose($this->file);
}
function __destruct() {
$this->file = fopen('file.txt', 'r');
}
} reverses open/close actions. class FileHandler {
function __construct($filename) {
fclose($filename);
}
function __destruct() {
fopen($filename, 'r');
}
} misuses fclose and fopen with wrong variables. class FileHandler {
private $file;
function __construct($filename) {
$this->file = fopen($filename, 'r');
}
function __destruct() {
echo 'File closed';
}
} does not close the file, only prints a message.
Final Answer:
class FileHandler {
private $file;
function __construct($filename) {
$this->file = fopen($filename, 'r');
}
function __destruct() {
fclose($this->file);
}
} -> Option A
Quick Check:
Open in __construct, close in __destruct = class FileHandler {
private $file;
function __construct($filename) {
$this->file = fopen($filename, 'r');
}
function __destruct() {
fclose($this->file);
}
} [OK]
Hint: Open resource in constructor, close it in destructor [OK]
Common Mistakes:
Closing file in constructor or opening in destructor
Not storing file handle in a property
Only printing message instead of closing resource
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.