PHP OOP හි බහු අන්තර්මුඛයන්
PHP හි බහු උරුමකම නොමැත - සෑම පන්තියකටම
එක් ආදිපුරුෂයෙකු පමණක් තිබිය හැකිය.
අන්තර්මුඛ සමඟ කෙසේ වෙතත්, කාරණය වෙනස් ය:
සෑම පන්තියකටම ඕනෑම සංඛ්යාවක අන්තර්මුඛ ක්රියාත්මක කළ හැකිය.
මෙය සඳහා අන්තර්මුඛයේ නම්
කොමාවකින් වෙන් කර ලැයිස්තුගත කළ යුතුය, යතුරු වචනයට පසුව
implements.
මෙය අන්තර්මුඛ සහ වියුක්ත පන්ති අතර තවත් වෙනසක් පෙන්වයි - බොහෝ අන්තර්මුඛ ක්රියාත්මක කළ හැකි නමුත් බහු වියුක්ත පන්ති උරුම කරගත නොහැක.
අපි ප්රායෝගිකව උත්සාහ කරමු. අපි සතුව ඇතැයි සිතමු
iFigure අන්තර්මුඛයට අමතරව
iTetragon අන්තර්මුඛයද.
මෙම අන්තර්මුඛයේ ක්රම පන්ති මගින් ක්රියාත්මක කරනු ඇත
Quadrate සහ Rectangle,
ඔවුන්ට 4 පැති ඇති නිසා, නමුත් පන්තිය නොවේ
Disk.
iTetragon අන්තර්මුඛය විස්තර කරයි යැයි සිතමු
සියලුම හතරැස් පැති සඳහා ගෙටර්
සතරැස්:
<?php
interface iTetragon
{
public function getA();
public function getB();
public function getC();
public function getD();
}
?>
අපි සතුව ඇතැයි සිතමු iFigure අන්තර්මුඛය,
අපි මීට පෙර සාදා ඇත:
<?php
interface iFigure
{
public function getSquare();
public function getPerimeter();
}
?>
Quadrate පන්තිය කරමු
අන්තර්මුඛ දෙකක් ක්රියාත්මක කරයි. මෙය සඳහා ලැයිස්තුගත කරමු
අන්තර්මුඛ දෙකම කොමාවකින් වෙන් කර, යතුරු වචනයට පසුව
implements:
<?php
class Quadrate implements iFigure, iTetragon
{
// මෙහි ක්රියාත්මක කිරීමක් ඇත
}
?>
දැන් අපගේ Quadrate පන්තිය සංවර්ධනය කරමු,
එය iTetragon අන්තර්මුඛය ක්රියාත්මක කරන පරිදි.
අපගේ චතුරස්රය ද්රවාංක
සතරැස් අවස්ථාවක්, සෑම චතුරස්රයක්ම
සියලුම පැති සමාන වේ. එබැවින් සියලුම නව ක්රම
එකම දෙයක් ආපසු ලබා දෙනු ඇත - චතුරස්රයේ පළල:
<?php
class Quadrate implements iFigure, iTetragon
{
private $a;
public function __construct($a)
{
$this->a = $a;
}
public function getA()
{
return $this->a;
}
public function getB()
{
return $this->a;
}
public function getC()
{
return $this->a;
}
public function getD()
{
return $this->a;
}
public function getSquare()
{
return $this->a * $this->a;
}
public function getPerimeter()
{
return 4 * $this->a;
}
}
?>
පැහැදිලිවම, සෘජුකෝණාස්රයේ තවදුරටත් සියල්ල නොවේ
පැති සමාන වේ, නමුත් ප්රතිවිරුද්ධ පැති පමණි.
මෙම අවස්ථාවේදී, නව ක්රම ටිකක් වනු ඇත
වෙනස් වේ. හොඳයි, සහ යම් ට්රැපෙසොයිඩ් එකක
� සියල්ලම 4 පැති වෙනස් වේ.
කෙසේ වෙතත්, අප සලකා බලන රූපය කුමක් වුවත් වැදගත් නොවේ අප සලකා බලමු - වැදගත් දෙය නම් මේ සියලු ඇති ක්රම ඇති රූප (යම් රූප ද්රවාංක වුවද) සහ ක්රියා කිරීම ඒකාකාරව.
Rectangle පන්තිය කරන්න
අන්තර්මුඛ දෙකක් ද ක්රියාත්මක කරයි: සහ iFigure,
සහ iTetragon.
iCircle අන්තර්මුඛය සාදන්න, ක්රම සමඟ
getRadius සහ getDiameter.
Disk පන්තිය ද කරන්න
අන්තර්මුඛ දෙකක් ක්රියාත්මක කරයි: සහ iFigure,
සහ iCircle.