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 හැඩතල විස්තර කරයි. ඔබගේ අන්තර්මුඛය
ගොඩනැගීමේ නිර්මාතෘවරයා විස්තර කරයි,
කැටයේ පැත්ත පරාමිතියක් ලෙස පිළිගනිමින්, මෙන්ම ක්රම
කැටයේ පරිමාව සහ පෘෂ්ඨ වර්ගඵලය ලබා ගැනීම සඳහා.
Cube පන්තිය සාදන්න, අන්තර්මුඛය ක්රියාත්මක කරයි
iCube.
iUser අන්තර්මුඛය සාදන්න, එය
පරිශීලකයෙකු විස්තර කරයි. උපකල්පනය කෙරේ
පරිශීලකයාට නම සහ වයස ඇති අතර මෙම ක්ෂේත්ර
ගොඩනැගීමේ නිර්මාතෘවරයාගේ පරාමිති ලෙස සම්ප්රේෂණය වේ. ඉඩ දෙන්න
ඔබගේ අන්තර්මුඛය ද පරිශීලකයෙකු සතුව
නම සහ වයස සඳහා ලබන උපාංග ඇත (නමුත් දමන උපාංග නොවේ).
User පන්තිය සාදන්න, අන්තර්මුඛය ක්රියාත්මක කරයි
iUser.