PHP में OOP के इंटरफेस में कंस्ट्रक्टर की घोषणा
इंटरफेस में क्लास कंस्ट्रक्टर भी घोषित किया जा सकता है।
आइए एक उदाहरण देखें। मान लीजिए कि हमने एक Rectangle क्लास बनाने का फैसला किया है, जिसमें
क्षेत्रफल और परिमाप ज्ञात करने के तरीके होंगे,
साथ ही एक कंस्ट्रक्टर भी होगा जो दो पैरामीटर लेता है।
आइए इंटरफेस की सहायता से अपनी क्लास का वर्णन करें:
<?php
interface iRectangle
{
public function __construct($a, $b); // दो पैरामीटर वाला कंस्ट्रक्टर
public function getSquare();
public function getPerimeter();
}
?>
आइए हम अपने इंटरफेस iRectangle का कार्यान्वयन लिखें:
<?php
class Rectangle implements iRectangle
{
private $a;
private $b;
public function __construct($a, $b)
{
$this->a = $a;
$this->b = $b;
}
public function getSquare()
{
return $this->a * $this->b;
}
public function getPerimeter()
{
return 2 * ($this->a + $this->b);
}
}
?>
इंटरफेस में कंस्ट्रक्टर की घोषणा करने से हमें क्या मिला? सबसे पहले, हम क्लास में कंस्ट्रक्टर को लागू करना नहीं भूलेंगे। दूसरे, इंटरफेस स्पष्ट रूप से इंगित करता है, कि क्लास कंस्ट्रक्टर को दो पैरामीटर लेने चाहिए: न ज्यादा, न कम। यह हमें आकस्मिक त्रुटि से भी बचाता है।
हमने एक अलग इंटरफेस iRectangle क्यों बनाया,
न कि कंस्ट्रक्टर को Figure इंटरफेस में जोड़ा?
क्योंकि सभी आकृतियों में भुजाओं की अलग-अलग संख्या होती है
और, तदनुसार, कंस्ट्रक्टर में पैरामीटर की अलग-अलग संख्या होती है।
इसलिए हमें आयतों के लिए विशेष रूप से एक अलग, अधिक सटीक इंटरफेस
बनाना पड़ा।
एक इंटरफेस iCube बनाएं, जो
घन आकृति का वर्णन करेगा। आपका इंटरफेस
एक कंस्ट्रक्टर का वर्णन करे, जो पैरामीटर के रूप में घन की भुजा लेता हो,
साथ ही घन का आयतन और पृष्ठीय क्षेत्रफल प्राप्त करने के तरीके भी हों।
एक क्लास Cube बनाएं, जो इंटरफेस
iCube को लागू करती हो।
एक इंटरफेस iUser बनाएं, जो
यूजर का वर्णन करेगा। यह माना जाता है कि
यूजर का नाम और उम्र होगी और ये फील्ड
कंस्ट्रक्टर के पैरामीटर के रूप में पास की जाएंगी।
आपका इंटरफेस यह भी निर्धारित करे कि
यूजर के पास नाम और उम्र के लिए गेटर होंगे (लेकिन सेटर नहीं)।
एक क्लास User बनाएं, जो इंटरफेस
iUser को लागू करती हो।