চাইল্ড ক্লাসে পেরেন্ট কনস্ট্রাক্টর মেথড কল করার সময় দুটি কেস সম্মুখীন হয়।
কেস ১
যদি চাইল্ড ক্লাস কনস্ট্রাক্টর ডিফাইন করে, তবে পেরেন্ট ক্লাস কনস্ট্রাক্টর সরাসরি চাইল্ড ক্লাসে রান করা যায় না। পেরেন্ট কনস্ট্রাক্টর রান করতে চাইল্ড কনস্ট্রাক্টরের ভিতরে parent::__construct() কল করা আবশ্যক।
উদাহরণ
<?php
class grandpa{
public function __construct(){
echo "I am in Tutorials Point"."\n";
}
}
class papa extends grandpa{
public function __construct(){
parent::__construct();
echo "I am not in Tutorials Point";
}
}
$obj = new papa();
?>
Output: I am in Tutorials Point I am not in Tutorials Point
ব্যাখ্যা
উপরোক্ত উদাহরণে, পেরেন্ট ক্লাস কনস্ট্রাক্টর কল করতে parent::__construct() ব্যবহার করা হয়েছে।
কেস ২
যদি চাইল্ড ক্লাস কনস্ট্রাক্টর ডিফাইন না করে, তবে সেটি পেরেন্ট ক্লাস থেকে নরমাল ক্লাস মেথডের মতো ইনহেরিট করতে পারে (যদি সেটি প্রাইভেট ডিক্লেয়ার না করা হয়)।
উদাহরণ
<?php
class grandpa{
public function __construct(){
echo "I am in Tutorials point";
}
}
class papa extends grandpa{
}
$obj = new papa();
?>
আউটপুট
I am in Tutorials point
ব্যাখ্যা
এখানে পেরেন্ট ক্লাস ইমপ্লিসিটলি কল হয়েছে কারণ চাইল্ড ক্লাসে কোনো কনস্ট্রাক্টর ফাংশন ডিক্লেয়ার করা হয়নি।