Yn y wers helaeth hon, byddwn yn ymchwilio i gymhlethdodau ymarferoldeb rhyngwyneb PHP. O Yn y swydd hon, byddwn yn edrych ar y gwahaniaethau a'r tebygrwydd rhwng dau gysyniad PHP hanfodol: rhyngwynebau yn erbyn dosbarthiadau haniaethol. Byddwn yn edrych ar y gystrawen ac yn defnyddio achosion ar gyfer pob un, yn ogystal â manteision ac anfanteision defnyddio rhyngwynebau a dosbarthiadau haniaethol yn eich cod. Erbyn diwedd y sesiwn hon, byddwch yn gwybod pryd i ddefnyddio rhyngwynebau PHP a phryd i ddefnyddio dosbarthiadau haniaethol, yn ogystal â sut i'w cymhwyso yn eich prosiectau rhaglennu.
Beth yw rhyngwyneb yn OOP?
- Dosbarth sy'n cynnwys dulliau haniaethol yn unig yw rhyngwyneb.
- Trwy ddefnyddio'r dosbarth rhyngwyneb, gallwn nodi pa ddulliau y dylai dosbarth eu gweithredu sy'n ymestyn y rhyngwyneb.
- Yn wahanol i ddosbarth haniaethol, nid oes angen i chi ysgrifennu crynodebau gyda'r dulliau oherwydd dim ond dulliau haniaethol y gall rhyngwyneb fod ynddo.
- rhyngwyneb allweddair yn cael ei ddefnyddio i ddatgan dosbarth rhyngwyneb. Edrychwch ar y gystrawen ganlynol o ddosbarth rhyngwyneb yn PHP.
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function someMethod3() : string;
}
?>
Er bod dosbarthiadau haniaethol a rhyngwynebau yn eithaf tebyg maent yn rhesymegol wahanol i'w gilydd.
Gwahaniaeth rhwng dosbarthiadau Rhyngwyneb a Haniaethol yn PHP
Dosbarth Rhyngwyneb | Dosbarth Haniaethol |
Ni all gynnwys priodweddau | Gall gynnwys priodweddau |
Mae pob dull yn haniaethol ac nid oes angen allweddair haniaethol ynghyd â dulliau. | Mae Con yn cynnwys dulliau haniaethol yn ogystal â dulliau anhaniaethol. Mae angen allweddair haniaethol i ddatgan dull haniaethol. |
Gall dosbarth weithredu rhyngwyneb ynghyd ag etifeddu gan ddosbarth arall. Mae'n golygu y gall dosbarth plentyn weithredu rhyngwyneb ar yr un pryd. | Ni all dosbarth plentyn (a etifeddwyd o ddosbarth arall), weithredu'r dosbarth haniaethol. |
Rhaid i bob dull fod yn gyhoeddus mewn perthynas ag addaswyr mynediad. | Gall dulliau naill ai fod yn gyhoeddus neu wedi'u diogelu mewn perthynas ag addaswyr mynediad. |
Enghraifft o Ryngwyneb yn PHP
rhyngwyneb defnyddir allweddair i ddatgan rhyngwyneb yn PHP. Edrychwch ar y gweithrediad canlynol o'r rhyngwyneb yn PHP.
<?php
interface Unit {
public function standard_unit();
}
class Weight implements Unit {
public function standard_unit() {
echo "Kg";
}
}
$weight= new Weight();
$weight->standard_unit();
?>
- Yn yr enghraifft uchod. rydym yn creu Uned dosbarth rhyngwyneb sy'n cynnwys uned standard_unit.
- Yna rydyn ni'n creu dosbarth arall pwysau sy'n gweithredu'r Uned rhyngwyneb ac yn diffinio'r dull standard_unit ynddo.
- O'r enghraifft uchod, gallwn weld y gall y dosbarth sy'n defnyddio rhyngwyneb ddiystyru ei ddull a'i ddefnyddio yn ei ffordd ei hun. Gadewch i ni ddweud bod gennym ni hyd dosbarth arall, gall ddefnyddio'r dull standard_unit yn ei ffordd ei hun.
- Gallwn ysgrifennu'r rhesymeg a fydd yn gweithio ar gyfer pob maint ffisegol sydd ag unedau SI. Edrychwch ar yr enghraifft ganlynol.
<?php
// Interface definition
interface Unit {
public function standard_unit();
}
// Class definitions
class Weight implements Unit {
public function makeSound() {
echo " kg";
}
}
class Length implements Unit {
public function standard_unit() {
echo " meter";
}
}
class Temperature implements Unit {
public function standard_unit() {
echo " celcius";
}
}
// Create a list of Physical Quanitites
$weight = new Weight();
$length = new Length();
$temperature = new Temperature();
$quantities= array($weight, $length, $temperature);
// Tell the quantities to use its standard unit
foreach($quantities as $quantities) {
$quantitiy->standard_unit();
}
?>
- Yn yr enghraifft uchod, rydym yn creu dosbarthiadau tebyg i'r enghraifft flaenorol.
- Mae'r dosbarthiadau pwysau, hyd a thymheredd yn gweithredu'r un rhyngwyneb a gallant ddefnyddio'r dull standard_unit yn ei ffordd ei hun. Felly, rydyn ni'n gwneud amrywiaeth o wrthrychau'r dosbarthiadau hyn ac yn eu dolenu fesul un i ddosbarthu'r dull standard_unit.