Home »
PHP »
PHP find output programs
PHP find output programs (Constructors and Destructors) | set 1
Find the output of PHP programs | Constructors & Destructors | Set 1: Enhance the knowledge of PHP Constructors & Destructors by solving and finding the output of some PHP programs.
Submitted by Nidhi, on January 28, 2021
Question 1:
<?php
class Sample
{
private $A;
private $B;
public function Sample()
{
$this->A = 10;
$this->B = 20;
}
public function print ()
{
echo "A: $this->A<br>";
echo "B: $this->B<br>";
}
}
function main()
{
$E = new Sample();
$E->print();
}
main();
?>
Output:
A: 10
B: 20
Explanation:
In the above program, we created a class Sample with two data members $A and $B. The Sample class also contains a default constructor and print() member function.
The default constructor is used to initialize data members, and the print() method is used to print the value of data members.
Then we defined a function main(), here we created the object of Sample class and call the print() method that will print values of data members on the web page.
Question 2:
<?php
class Sample
{
private $A;
private $B;
public static function Sample()
{
$this->A = 10;
$this->B = 20;
}
public function print ()
{
echo "A: $this->A<br>";
echo "B: $this->B<br>";
}
}
function main()
{
$E = new Sample();
$E->print();
}
main();
?>
Output:
PHP Fatal error: Constructor Sample::Sample() cannot be static
in /home/main.php on line 2
Explanation:
The above program will generate syntax error because we created a constructor with a static keyword. But we cannot create a static constructor in PHP.
Question 3:
<?php
class Sample
{
private $A;
private $B;
public function Sample($A, $B)
{
$this->A = $A;
$this->B = $B;
}
public function print ()
{
echo "A: $this->A<br>";
echo "B: $this->B<br>";
}
}
function main()
{
$OB1 = new Sample();
$OB2 = new Sample(20, 30);
$OB1->print();
$OB2->print();
}
main();
?>
Output:
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to
function Sample::Sample(), 0 passed in /home/main.
php on line 22 and exactly 2 expected in /home/main.php:7
Stack trace:
#0 /home/main.php(22): Sample->Sample()
#1 /home/main.php(29): main()
#2 {main}
thrown in /home/main.php on line 7
Explanation:
The above program will generate syntax error because we created the object $OB1 with no argument default constructor. But default constructor is not defined in the Sample class. that's why it will generate the error.
Question 4:
<?php
class Sample
{
private $A;
private $B;
public Sample()
{
$this->A = 10;
$this->B = 20;
}
public Sample($A, $B)
{
$this->A = $A;
$this->B = $B;
}
public function print ()
{
echo "A: $this->A<br>";
echo "B: $this->B<br>";
}
}
function main()
{
$OB1 = new Sample();
$OB1->print();
$OB2 = new Sample(30, 40);
$OB2->print();
}
main();
?>
Output:
PHP Parse error: syntax error, unexpected 'Sample' (T_STRING),
expecting function (T_FUNCTION) or const (T_CONST) in
/home/main.php on line 7
Explanation:
The above program will generate syntax error because we did not use the function keyword in the definition of constructors of the Sample class.
Question 5:
<?php
class Sample
{
private $A;
private $B;
public function __construct()
{
$this->A = 10;
$this->B = 20;
}
public function __construct($A, $B)
{
$this->A = $A;
$this->B = $B;
}
public function print ()
{
echo "A: $this->A<br>";
echo "B: $this->B<br>";
}
}
$OB1 = new Sample();
$OB1->print();
$OB2 = new Sample(30, 40);
$OB2->print();
?>
Output:
PHP Fatal error: Cannot redeclare Sample::__construct()
in /home/main.php on line 12
Explanation:
The above program will generate the fatal error because we cannot perform constructor overloading using magic function __construct() in PHP.