Mion-atharraichean ruigsinneachd ann am PHP

Luchd-togail agus luchd-sgrios ann am PHP
Oighreachd ann am PHP OOP

Ann am PHP, tha mion-atharraichean ruigsinneachd nam pàirt chudromach de phrògramadh a tha ag amas air nithean (OOP). Bidh iad a’ sònrachadh farsaingeachd caochladairean clas no dòighean-obrach agus mar a gheibhear thuca. Anns an dreuchd seo, bheir sinn sùil air na diofar sheòrsaichean de luchd-atharrachaidh ruigsinneachd ann am PHP agus bheir sinn eisimpleirean air mar a chleachdas tu iad.

Seòrsaichean atharrachaidh ruigsinneachd ann am PHP

Ann am PHP, tha luchd-atharrachaidh ruigsinneachd air an seòrsachadh mar poblach, prìobhaideach no dìon.

  • Poblach: Faodar faighinn gu modh no feart a tha air a shuidheachadh don phoball anns a h-uile àite. Is e seo am mion-atharrachadh ruigsinneachd bunaiteach ann am PHP.
  • Prìobhaideach: Chan fhaighear cothrom air modh no feart a tha suidhichte gu prìobhaideach ach taobh a-staigh a’ chlas anns a bheil e air a chruthachadh.
  • Dìon: Faodar faighinn gu modh no feart a tha air a dhìon taobh a-staigh a 'chlas anns a bheil e air a chruthachadh, a bharrachd air ann an clasaichean a tha a' sealbhachadh bhon chlas sin.

eisimpleirean

class Person{
  public $name;
  protected $age;
  private $height;
}

$x= new Person();
$x->name = 'John'; // OK
$x->age= '32'; // ERROR
$x->height= '5.4'; // ERROR

Anns an eisimpleir gu h-àrd, bidh sinn a’ mìneachadh clas “Duine” le trì buadhan, gach fear le inneal-atharrachaidh ruigsinneachd air leth. Tha am feart “ainm” poblach, tha am feart “aois” air a dhìon, agus tha am feart “àirde” prìobhaideach. Nuair a dh’ fheuchas sinn ri faighinn chun fheart “ainm” taobh a-muigh a’ chlas agus luach a chur ris, bidh a h-uile dad ag obair gu math. Ach, le bhith a’ feuchainn ri luachan a chur ris na togalaichean “aois” agus “àirde” taobh a-muigh a’ chlas thig mearachd marbhtach.

Dòighean Poblach, Prìobhaideach agus Dìon

class Person{
  public $name;
  public $age;
  public $height;

  function set_name($n) {  // a public function (default)
    $this->name = $n;
  }
  protected function set_age($a) { // a protected function
    $this->age = $a;
  }
  private function set_height($h) { // a private function
    $this->height = $h;
  }
}

$person = new Person();
$person->set_name('John'); // OK
$person->set_age('26'); // ERROR
$person->set_height('5.4'); // ERROR

Anns an eisimpleir gu h-àrd, bidh sinn a’ togail clas “Duine” le trì dòighean, gach fear le inneal-atharrachaidh ruigsinneachd air leth. Tha an dòigh “ainm suidhichte” poblach, tha an dòigh “aois stèidhichte” air a dhìon, agus tha an dòigh “àirde suidhichte” prìobhaideach. Nuair a dh’ fheuchas sinn ris a’ ghnìomh “ainm suidhichte” a chuir a-steach bho thaobh a-muigh a’ chlas, tha e ag obair gu math. Nuair a dh’ fheuchas sinn ris na dòighean “aois shuidhichte” agus “àirde suidhichte” a ghairm bho thaobh a-muigh a’ chlas, gheibh sinn mearachd marbhtach.

Mion-atharraichean ruigsinneachd adhartach: Geàrr-chunntas agus Deireannach

Tha PHP a’ toirt seachad atharraichean ruigsinneachd sòlaimte leis an t-ainm “abstract” agus “deireannach” a bharrachd air na mion-atharraichean ruigsinneachd cunbhalach.

  • Chan urrainnear inneal-atharrachaidh ruigsinneachd eas-chruthach a chleachdadh ach air clasaichean agus dòighean. Tha e air a chleachdadh gus plana clas a thogail, ach chan urrainnear an clas a chuir air adhart sa bhad. Is e dòighean abstract dòighean a dh’ fheumas a h-uile clas a gheibh bhon chlas eas-chruthach a chuir an gnìomh.
  • Faodaidh clasaichean, dòighean agus feartan uile mion-atharrachadh ruigsinneachd deireannach a thoirt seachad. Tha e air a chleachdadh gus casg a chuir air clas no dòigh bho bhith air a leudachadh no air a dhol thairis air.

eisimpleirean

abstract class Bike {

    private $maxSpeed = 80;

    // Simple method
    public function drivingSpeed() {
        return "Driving at " . $this->maxSpeed . " kilometer/hour";
    }

    // Abstract method
    abstract public function drive();
}

class Police extends Bike {

    public function drive() {
        return "Driving out of speed limit.";
    }

}

$bike= new Police();
echo $bike->drivingSpeed();

Anns an eisimpleir gu h-àrd, bidh sinn a 'togail a eas-chruthach clas leis an ainm “Bike” aig a bheil gnìomh eas-chruthach ris an canar “drive()”. Bidh sinn an uairsin a’ togail clas ùr leis an t-ainm “Poileas,” a tha a ’leudachadh an clas “Bike” agus a’ cur an gnìomh an gnìomh “drive()”. Bidh sinn a’ cleachdadh clas “Poileas” an àite sin oir chan urrainn dhuinn rud den chlas eas-chruthach a thogail.

Mu dheireadh, tha mion-atharraichean ruigsinneachd nam pàirt chudromach de OOP ann am PHP agus tha iad air an cleachdadh gus farsaingeachd caochladairean no gnìomhan clas a chuingealachadh. Faodaidh tuigse agus cleachdadh èifeachdach air luchd-atharrachaidh ruigsinneachd do chuideachadh le bhith a’ leasachadh còd nas tèarainte agus nas seasmhaiche.

Q&A

C: Dè a th’ ann an luchd-atharrachaidh ruigsinneachd?
F: Bidh luchd-atharrachaidh ruigsinneachd a’ mìneachadh farsaingeachd caochladairean no modhan clas, a bharrachd air far am faighear iad. Ann am PHP, tha luchd-atharrachaidh ruigsinneachd air an seòrsachadh mar poblach, prìobhaideach no dìon.

C: Dè am mion-atharrachadh ruigsinneachd bunaiteach?
F: Tha am mion-atharrachadh ruigsinneachd bunaiteach aig PHP poblach. Mura toir thu seachad am mion-atharrachaidh ruigsinneachd fhad ‘s a tha thu a’ cruthachadh modh no feart ann an clas PHP, thèid a chuir gu poblach gu bunaiteach.

C: Dè an diofar eadar luchd-atharrachaidh ruigsinneachd prìobhaideach agus dìonta?
F: Is dòcha nach bi dòigh no feart prìobhaideach ruigsinneach ach taobh a-staigh a’ chlas a chruthaich e, ach faodar faighinn gu modh no feart dìonta taobh a-staigh a’ chlas a chruthaich e a bharrachd air na clasaichean a shealbhaich bhon chlas sin.

C: An urrainn dhut eisimpleir a thoirt seachad air a bhith a’ cleachdadh inneal-atharrachaidh ruigsinneachd eas-chruthach ann am PHP?

abstract class Bike {
    private $maxSpeed = 80;
    abstract public function drive();
}
class Police extends Bike {
    public function drive() {
        return "Driving out of speed limit.";
    }
}

Anns an eisimpleir gu h-àrd, bidh sinn a’ togail clas eas-chruthach leis an t-ainm “Bike” aig a bheil gnìomh eas-chruthach ris an canar “drive()”. Bidh sinn an uairsin a’ togail clas ùr leis an t-ainm “Poileas,” a leudaicheas an clas “Bike” agus a chuireas an gnìomh “drive()”. Bidh sinn a’ cleachdadh clas “Poileas” an àite sin oir chan urrainn dhuinn rud den chlas eas-chruthach a thogail.

C: Ciamar a tha am mion-atharrachaidh ruigsinneachd deireannach ag obair?
F: Faodar am mion-atharrachaidh ruigsinneachd deireannach a chuir an sàs ann an clasaichean, dòighean-obrach agus feartan. Tha e air a chleachdadh gus casg a chuir air clas bho bhith air a leudachadh no dòigh-obrach bho bhith air a thoirt thairis. Tha seo a’ ciallachadh nach urrainnear clas sam bith a gheibh sealbh bho chlas mu dheireadh a leudachadh, agus chan urrainnear a dhol thairis air dòigh sam bith a tha air a chomharrachadh mar dheireannach.

Eacarsaichean:

  1. Dè am mion-atharrachadh ruigsinneachd bunaiteach ann am PHP?
  2. Dè an diofar eadar atharraichean ruigsinneachd prìobhaideach agus dìonta ann am PHP?
  3. Thoir eisimpleir de bhith a’ cleachdadh inneal-atharrachaidh ruigsinneachd eas-chruthach ann am PHP.
  4. Ciamar a tha am mion-atharrachaidh ruigsinneachd deireannach ag obair?
  5. An urrainn dhut rud de chlas eas-chruthach a chruthachadh? Carson neo carson?
  6. An urrainn dhut dòigh dheireannach ann an clas cloinne a dhubhadh às? Carson neo carson?
  7. An urrainn dhut luach a shònrachadh do fheart prìobhaideach taobh a-muigh a’ chlas anns a bheil e air a chruthachadh? Carson neo carson?
  8. An gabh modh dìon a chleachdadh taobh a-muigh a’ chlas anns a bheil e air a chruthachadh? Carson neo carson?

Freagairtean:

  1. Tha am mion-atharrachadh ruigsinneachd bunaiteach ann am PHP poblach.
  2. Chan fhaighear cothrom air modh no feart prìobhaideach ann am PHP ach taobh a-staigh a’ chlas anns a bheil e air a chruthachadh, ach gheibhear gu modh no feart dìonta taobh a-staigh a’ chlas anns a bheil e air a chruthachadh, a bharrachd air ann an clasaichean a tha a’ sealbhachadh bhon chlas sin.
abstract class Bike {
    private $maxSpeed = 80;
    abstract public function drive();
}
class Police extends Bike {
    public function drive() {
        return "Driving out of speed limit.";
    }
}

4. Faodar am mion-atharrachaidh ruigsinneachd deireannach a chuir an sàs ann an clasaichean, dòighean-obrach agus feartan. Tha e air a chleachdadh gus casg a chuir air clas bho bhith air a leudachadh no dòigh-obrach bho bhith air a thoirt thairis.
5. Chan e, chan urrainn dhuinn nì de ​​chlas eas-chruthach a chruthachadh a chionn 's gu bheil clas eas-chruthach mar phlana airson clasaichean eile agus chan eil neach-togail aige gus nì a chruthachadh.
6. Chan urrainn, chan urrainn dhuinn dòigh dheireannach a chur an dàrna taobh ann an clas chloinne oir tha e air a chomharrachadh mar dheireannach agus chan urrainnear a dhol thairis air.
7. Chan e, chan urrainn dhuinn luach a thoirt do bhuadhan prìobhaideach taobh a-muigh a' chlas a chruthaich e oir chan eil am feart ri fhaighinn ach taobh a-staigh a' chlas.
8. Chan e, chan urrainn dòigh dìon a bhith ruigsinneach taobh a-muigh a' chlas a chruthaich e, ach faodar faighinn thuige le clasaichean a thig bhon chlas sin.

Luchd-togail agus luchd-sgrios ann am PHP
Oighreachd ann am PHP OOP
dùin

Cùm suas ris an fhiosrachadh as ùire mu PHP!

Cha bhith sinn a’ spamadh!

en English
X
Rach gu mhullaich