Oighreachd ann am PHP OOP

Mion-atharraichean ruigsinneachd ann am PHP
Constants ann am PHP OOP

Dè th' ann an Oighreachd?

Nuair a thig clas bho chlas eile, canar oighreachd ris. Seo cuid de theirmean cudromach co-cheangailte ri dìleab ann am PHP.

  • Clas phàrant - Canar clas pàrant ris a’ chlas às a bheil na clasaichean eile a’ tighinn. Canar clas bunaiteach ris cuideachd.
  • Clas Chloinne – Canar clas cloinne ris a’ chlas a thig bho chlas eile. Tha ainmean eile air a shon cuideachd leithid clas dhuilleagan no clas a thàinig às.
Oighreachd ann am PHP

Ciamar a shealbhaicheas tu clas ann am PHP?

Faodar clas a shealbhachadh le bhith a’ cleachdadh an a ’leudachadh prìomh-fhacal. Thoir sùil air an eisimpleir a leanas.

<?php
class Fruit {
    protected $name;
    protected $color;

    public function __construct($name, $color) {
        $this->name = $name;
        $this->color = $color;
    }

    public function getName() {
        return $this->name;
    }

    public function getColor() {
        return $this->color;
    }
}

class Apple extends Fruit {
    protected $variety;

    public function __construct($name, $color, $variety) {
        parent::__construct($name, $color);
        $this->variety = $variety;
    }

    public function getVariety() {
        return $this->variety;
    }
}

$apple = new Apple('Apple', 'Red', 'Fuji');
echo $apple->getName(); // Output: Apple
echo $apple->getColor(); // Output: Red
echo $apple->getVariety(); // Output: Fuji
?>

Anns an eisimpleir seo, an clas Apple a ’leudachadh an clas Fruit, a tha a’ ciallachadh gu bheil na feartan agus na dòighean-obrach aig clas Fruit a bharrachd air a’ chlas Apple. Bidh an neach-togail clas Apple a’ cleachdadh a’ ghnìomh pàrant :: construct() gus fios a chuir chun neach-togail phàrant, a’ toirt seachad na crìochan iomchaidh. An uairsin, a’ cleachdadh dìleab, faodaidh tu eisimpleir den chlas Apple a chruthachadh agus faighinn chun ghnìomh bhon chlas phàrant.

Gus geàrr-chunntas a dhèanamh air na tha gu h-àrd:

  1. Tha oighreachd a’ leigeil le clas an leanaibh cothrom fhaighinn air a’ phoball __construct, dòighean agus feartan a’ chlas phàrant.
  2. Anns an eisimpleir gu h-àrd, faodaidh sinn cothrom fhaighinn air an dòigh apple clas a 'cleachdadh a nì, a thuilleadh air dòighean clas pàrant.

Farsaingeachd luchd-atharrachaidh ruigsinneachd dìonta ann an Oighreachd

Anns an oideachadh mu dheireadh, dh’ ionnsaich sinn gu bheil buadhan/modhan dìonta de chlas rim faighinn taobh a-staigh a’ chlas agus na clasaichean a thàinig bhuaithe.

Gus tuigse fhaighinn air farsaingeachd luchd-atharrachaidh ruigsinneachd dìon ann an dìleab, leig dhuinn sùil a thoirt air an eisimpleir a leanas.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "I am $this->name and my color is $this->color";
  }
}

class Apple extends Fruit {
  public function message() {
    echo "I am from Fruit class or Apple one?";
  }
}

$apple = new Apple("Apple", "red");
$apple->message();
$apple->intro();
?>

Anns an eisimpleir gu h-àrd:

  • Bidh sinn a’ dèanamh clas ris an canar measan aig a bheil feartan poblach sònraichte agus gnìomh dìonta.
  • Bidh sinn a’ togail clas eile, ubhal, a tha a’ leudachadh bho Fruit agus aig a bheil eisimpleir fhèin.
  • Nuair a dh’ fheuchas sinn ri faighinn gu modh dìon a’ chlas mheasan le bhith a’ cleachdadh nì clas ubhal, tha e a’ toirt mearachd oir, tha sinn a’ feuchainn ri faighinn gu ball dìon de chlas measan taobh a-muigh a’ chlas toraidh.

Bheir sinn sùil air eisimpleir eile, a tha gu ìre mhòr na dhreach beag atharraichte den fhear mu dheireadh.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "I am {$this->name} and my color is {$this->color}.";
  }
}

class Apple extends Fruit {
  public function message() {
    echo "Am I a fruit or an apple? ";
    $this -> intro(); // protected
  }
}

$apple = new Apple("Apple", "red");
$strawberry->message();
?>

Leis gu bheil sinn a 'faighinn cothrom air taobh a-staigh a' chlas anns an eisimpleir roimhe, tha an dòigh dìon den chlas Fruit ri fhaighinn anns a 'chlas ubhal.

A' cur thairis ann an oighreachd

Tha toirt thairis a’ ciallachadh ath-mhìneachadh a dhèanamh air dòighean clas pàrant anns na clasaichean cloinne leis an aon ainm. Beachdaich air an t-eisimpleir a leanas de dh'oighreachd.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "I am {$this->name} and my color is {$this->color}.";
  }
}

class Apple extends Fruit {
  public $weight;
  public function __construct($name, $color, $weight) {
    $this->name = $name;
    $this->color = $color;
    $this->weight = $weight;
  }
  public function intro() {
    echo "I am {$this->name}, my color is {$this->color}. Also, my weight is {$this->weight} kg.";
  }
}

$apple= new Apple("Apple", "red", 50);
$apple->intro();
?>

Anns an eisimpleir gu h-àrd:

  • Tha tar-chur a’ ciallachadh a bhith ag ath-ainmeachadh dhòighean a’ chlas phàrant anns na clasaichean cloinne. Beachdaich air an eisimpleir a leanas de bhith a 'toirt thairis air oighreachd.
  • Is fhiach a bhith mothachail gu bheil an aon ainm aig na dòighean __construct agus intro ann an clas cloinne ubhal. Ach, faodaidh na paramadairean a bhith eadar-dhealaichte.
  • Cruthaichidh sinn eisimpleir den chlas ubhal agus cuiridh sinn na h-argamaidean chun dòigh togail.
  • Leis gun do chruthaich sinn an t-eisimpleir nì ubhal a’ cleachdadh an inneal-togail clas ubhal, nuair a chanas sinn ris an dòigh intro a’ cleachdadh eisimpleir ubhal, canaidh e gnìomh intro clas ubhal.

Dreuchd a’ phrìomh fhacal deireannach ann an dìleab

Tha am prìomh fhacal mu dheireadh a’ toirmeasg a’ phàiste/chlas a thàinig bho bhith a’ dol thairis air gnìomh pàrant/chlas bunaiteach. Thoir sùil air an eisimpleir a leanas gus faicinn mar a tha am prìomh fhacal deireannach air a chleachdadh.

<?php
class Fruit {
  final public function intro() {
    // code
  }
}

class Apple extends Fruit {
// error to override the intro
  public function intro() {
    // code
  }
}
?>

Bidh an clas ubhal a’ feuchainn ri faighinn seachad air an dòigh intro san eisimpleir roimhe. Tilgidh e mearachd bhon a chleachd sinn am prìomh fhacal mu dheireadh le gnìomh intro a’ chlas Fruit.

Ma tha thu airson barrachd a leughadh mu dhìleab PHP tha sinn a’ moladh na leanas stiùireadh oifigeil.

Q&A

C: Ann am PHP OOP, dè a th’ ann an dìleab?
F: Ann am PHP OOP, is e siostam a th’ ann an oighreachd a leigeas le clas ùr buadhan agus dòighean clas a bh’ ann roimhe a shealbhachadh. Tha seo a’ ciallachadh gum faod an clas ùr còd agus comas-gnìomh clas pàrant ath-chleachdadh fhad ‘s a chuireas iad feartan agus dòighean ùra ris fhèin.

C: Ann am PHP, ciamar a mhìnicheas tu clas a gheibh sealbh bho chlas eile?
A: Ann am PHP, tha am prìomh fhacal “leudachadh” air a chleachdadh gus clas a mhìneachadh a gheibh seilbh bho chlas eile. Mar eisimpleir, ma tha clas pàrant “ParentClass” agad agus gu bheil thu airson clas cloinne “Clas-chloinne” a thogail a thig bhuaithe, faodaidh tu sgrìobhadh:

class ChildClass extends ParentClass {
  // properties and methods
}

C: Ann am PHP, an urrainn do chlas sealbhachadh bho ghrunn chlasaichean?
F: Chan e, ann am PHP, chan urrainn do chlas ach sealbhachadh bho aon chlas eile. Ach, faodar eadar-aghaidh a chleachdadh gus gnìomhachd co-ionann a sholarachadh, agus faodaidh clas iomadh eadar-aghaidh a chuir an gnìomh.

C: A bheil e comasach faighinn thairis air modh ann an clas cloinne?
F: Faodaidh, faodaidh tu dòigh-obrach ann an clas cloinne a thoirt thairis le bhith a’ cruthachadh modh leis an aon ainm. Nuair a thèid a chleachdadh air nì clas cloinne, thèid an dòigh clas cloinne a chleachdadh an àite modh clas pàrant.

C: A bheil e comasach modh clas pàrant a chleachdadh bho chlas cloinne?
A: Faodaidh, faodaidh tu am prìomh fhacal “pàrant” a chleachdadh agus an gnìomhaiche fuasglaidh farsaingeachd (::) agus an t-ainm modh airson modh clas pàrant a ghairm bho chlas cloinne. Mar eisimpleir:

class ChildClass extends ParentClass {
  public function childMethod() {
    parent::parentMethod();
  }
}

Exercises:

  1. Dè am prìomh fhacal a thathas a’ cleachdadh ann am PHP gus sealltainn gu bheil clas a’ sealbhachadh bho chlas eile?
  2. Ciamar a gheibh thu cothrom air modh no seilbh bhon chlas phàrant ann an clas cloinne?
  3. Ciamar a chuireas tu fios gu neach-togail a’ chlas phàrant taobh a-staigh neach-togail clas cloinne?
  4. Ciamar a chuireas tu casg air dòigh-obrach no seilbh bho bhith air a thoirt thairis ann an clas cloinne?
  5. Dè an diofar eadar na extends agus implements prìomh fhaclan ann am PHP?

freagairtean:

  1. Tha extends Tha prìomh fhacal air a chleachdadh ann am PHP gus sealltainn gu bheil clas a’ sealbhachadh bho chlas eile.
  2. Gheibh thu cothrom air modh no seilbh bhon chlas phàrant ann an clas cloinne le bhith a’ cleachdadh an parent:: prìomh fhacal, air a leantainn leis an dòigh no ainm an togalaich.
  3. Faodaidh tu fios a chuir gu neach-togail a’ chlas phàrant taobh a-staigh neach-togail clas cloinne le bhith a’ cleachdadh an parent::__construct() dòigh.
  4. Faodaidh tu casg a chuir air dòigh no seilbh bho bhith air a thoirt thairis ann an clas cloinne le bhith a’ cleachdadh an final prìomh fhacal ron mhodh no dearbhadh seilbh anns a’ chlas phàrant.
  5. Tha extends Tha prìomh fhacal air a chleachdadh gus sealltainn gu bheil clas a’ sealbhachadh bho chlas eile, fhad ‘s a tha an implements prìomh fhacal air a chleachdadh gus sealltainn gu bheil clas a’ cur an gnìomh eadar-aghaidh.
Mion-atharraichean ruigsinneachd ann am PHP
Constants ann am PHP OOP
en English
X
Rach gu mhullaich