Newidwyr Mynediad yn PHP

A

Fel ieithoedd eraill, mae PHP hefyd yn gweithredu rhywfaint o gwmpas ar gyfer dulliau neu briodoleddau'r dosbarth. Mae addaswyr mynediad yn diffinio lle gellir cyrchu'r newidynnau neu'r dulliau dosbarth. Yn yr erthygl hon, byddwch chi'n dysgu am y addaswyr mynediad yn PHP OOP a'u mathau.

Mathau o Addaswyr Mynediad yn PHP

Mae tri addasydd mynediad yn PHP.

Cyhoeddus - Pan fyddwch yn creu dull neu briodoledd yn y dosbarth PHP ac nad ydych yn nodi'r addasydd mynediad, fe'i gosodir i'r cyhoedd yn ddiofyn. Yn y modd hwn, mae'r dull neu'r priodoledd yn hygyrch ym mhobman.

Preifat - Pan fyddwch chi'n creu dull neu newidyn gydag addasydd mynediad preifat, dim ond o fewn y dosbarth y mae'n cael ei greu y gellir ei gyrraedd.

Gwarchodedig - Mae dull neu briodoledd a warchodir yn hygyrch yn y dosbarth y mae'n cael ei greu ynddo. Hefyd, gall y dosbarthiadau sy'n deillio o'r dosbarth hwn fod yn ddull a phriodoledd gwarchodedig.

enghraifft

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

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

Esboniad o'r enghraifft uchod

  • Yn yr enghraifft uchod, rydym yn creu Person dosbarth gyda thri math o briodoledd gyda thri math gwahanol o addasydd mynediad.
  • Mae'r priodoledd enw wedi'i osod i'r cyhoedd. Tra bo'r oedran a'r uchder yn cael eu gwarchod ac yn breifat yn y drefn honno.
  • Pan geisiwn gyrchu'r enw priodoledd y tu allan i'r dosbarth a phennu rhywfaint o werth iddo, mae'n gweithio'n dda.
  • Ond, pan geisiwn bennu gwerth i'r priodoleddau oedran ac uchder y tu allan i'r dosbarth, mae'n cynhyrchu gwall angheuol.

Felly, o'r enghraifft uchod, mae gennych ddealltwriaeth glir o addaswyr mynediad yn PHP. Gadewch i ni ymarfer y dulliau.

Dulliau Cyhoeddus, Preifat a Gwarchodedig yn PHP

<?php
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('Jawad'); // OK
$person->set_age('26'); // ERROR
$person->set_height('5.4'); // ERROR
?>

Esboniad o'r enghraifft uchod

  • Yn yr enghraifft uchod, rydym yn creu Person dosbarth gyda thri math o ddulliau gyda thri math gwahanol o addasydd mynediad.
  • Mae'r dull enw wedi'i osod i'r cyhoedd. Tra bo'r oedran a'r uchder yn cael eu gwarchod ac yn breifat yn y drefn honno.
  • Pan geisiwn gyrchu enw'r dull y tu allan i'r dosbarth a phennu rhywfaint o werth iddo, mae'n gweithio'n dda.
  • Ond, pan geisiwn ni neilltuo gwerth i'r dulliau oedran ac uchder y tu allan i'r dosbarth, mae'n cynhyrchu gwall angheuol.

Heblaw am y tri addasydd mynediad hyn, mae gennym addaswyr mynediad Haniaethol a Therfynol yn PHP /. Fi yr adran nesaf, byddwch chi'n eu dysgu gydag enghreifftiau.

Addasydd Mynediad Haniaethol yn PHP

Dim ond i'r dosbarth a'r dulliau y gall addasydd mynediad haniaethol fod yn berthnasol. Ni allwn ddefnyddio crynodebau gyda'r priodoleddau dosbarth.

Unwaith y byddwn yn defnyddio haniaethol gyda'r dosbarth, ni ellir cychwyn ei wrthrych oherwydd nad oes ganddo unrhyw adeiladwr.

Hefyd, cofiwch, os na ddefnyddiwch addasydd mynediad haniaethol gyda'r dosbarth a datgan rhyw ddull haniaethol y tu mewn iddo. Mae'r dosbarth yn dod yn haniaethol yn ei gyfanrwydd.

Er enghraifft

<?php

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();

?>
  • Yn yr enghraifft uchod, rydym yn creu Beic dosbarth haniaethol sy'n cynnwys gyriant dull haniaethol ().
  • Rydym yn creu dosbarth arall sy'n darparu gweithrediad y gyriant dull haniaethol.
  • Gan na allwn greu gwrthrych o'r dosbarth haniaethol, rydym yn defnyddio'r dosbarth Heddlu.

Newidydd Mynediad Terfynol yn PHP

Yn union fel yr addasydd mynediad haniaethol, ni allwn ddefnyddio'r addasydd mynediad terfynol yn PHP gyda phriodoleddau'r dosbarth. Gallwn wneud y dosbarth neu ei ddulliau'n derfynol.

Ni all y dosbarthiadau eraill etifeddu dosbarth ag allweddair terfynol. Hefyd, ni ellir diystyru'r dull gyda'r addasydd mynediad terfynol gan yr is-ddosbarthiadau sy'n deillio o'r dosbarth hwn.

Er enghraifft - Dosbarth Terfynol mewn PHP

<?php

final class ParentClass {

    final function msg1() {
        echo "Method 1 of final class";
    }

    function msg2() {
        echo "Method 2 of final class";
    }
}

$obj1 = new ParentClass();
$obj1->msg1();
$obj1->msg2();

?>
  • Yn y dosbarth uchod, rydyn ni'n creu dull terfynol msg1 () a dull syml msg2 ().
  • Ni allwn ddiystyru'r dull terfynol msg1 (). Fodd bynnag, gall y dosbarth sy'n ei etifeddu wrthdroi dulliau msg2 ().
  • Ceisiwch ymarfer y broblem hon trwy greu dosbarth sy'n ymestyn y dosbarth Rhiant. Gweithredu'r ddau ddull a gwirio pa ddull sy'n cynhyrchu gwall wrth or-redeg.

Enghraifft arall - Dull Terfynol yn PHP

<?php

class ParentClass {

    final function msg1() {
        echo "Final Method 1 of simple class";
    }

    function msg2() {
        echo "Simple method 2 of simple class";
    }
}

class ChildClass extends ParentClass {

    function msg1() {
        echo "Trying final method to override.";
    }

}

?>
  • Yn yr enghraifft uchod, rydym yn creu dosbarth nad yw'n derfynol neu ddosbarth syml sydd â dau ddull. dull terfynol yw msg1 () ac mae msg2 () yn syml.
  • Rydym yn creu Dosbarth Plentyn sy'n ymestyn y Dosbarth Rhieni ac yn ceisio diystyru dull terfynol msg1 () y dosbarth rhieni.
  • Bydd yn cynhyrchu gwall angheuol ac ni fyddwch yn gallu diystyru dull terfynol dosbarth rhieni.

Ychwanegu sylw

Rhwydwaith Tiwtoriaid

Dysgwch PHP o A i Z