Modifikaturi Aċċess fil PHP

A

Bħal lingwi oħra, PHP jimplimenta wkoll xi skop għall-metodi jew attributi tal-klassi. Il-modifikaturi tal-aċċess jiddefinixxu fejn jistgħu jiġu aċċessati l-varjabbli tal-klassi jew il-metodi. F'dan l-artikolu, inti ser titgħallem dwar il- modifikaturi ta' aċċess fil-PHP OOP u t-tipi tagħhom.

Tipi ta 'Modifikaturi Aċċess fil PHP

Hemm tliet modifikaturi ta 'aċċess fil-PHP.

Pubbliku - Meta toħloq metodu jew attribut fil-klassi PHP u ma tispeċifikax il-modifikatur tal-aċċess, huwa ssettjat bħala pubbliku b'mod awtomatiku. F'dan il-mod, il-metodu jew l-attribut huwa aċċessibbli kullimkien.

Privat - Meta toħloq metodu jew varjabbli b'modifikatur ta' aċċess privat, huwa aċċessibbli biss fi ħdan il-klassi li fiha huwa maħluq.

Protetti – Il-metodu jew l-attribut protett huwa aċċessibbli fi ħdan il-klassi li fiha huwa maħluq. Ukoll, il-klassijiet derivati ​​minn din il-klassi jistgħu jkunu metodu u attribut protetti.

Eżempju

<?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
?>

Spjegazzjoni ta 'l-eżempju ta' hawn fuq

  • Fl-eżempju ta 'hawn fuq, noħolqu Persuna ta' klassi bi tliet tipi ta 'attributi bi tliet tipi differenti ta' modifikaturi ta 'aċċess.
  • L-attribut tal-isem huwa ssettjat bħala pubbliku. Billi, l-età u l-għoli huma stabbiliti għal protetti u privati ​​rispettivament.
  • Meta nippruvaw naċċedu għall-isem tal-attribut barra l-klassi u jassenjawlu xi valur, jaħdem tajjeb.
  • Iżda, meta nippruvaw nassenjaw valur lill-attributi ta 'età u għoli barra mill-klassi, dan jipproduċi żball fatali.

Allura, mill-eżempju ta 'hawn fuq, għandek fehim ċar tal-modifikaturi tal-aċċess fil-PHP. Ejja nipprattikaw il-metodi.

Metodi Pubbliċi, Privati ​​u Protetti fil-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
?>

Spjegazzjoni ta 'l-eżempju ta' hawn fuq

  • Fl-eżempju ta 'hawn fuq, noħolqu Persuna ta' klassi bi tliet tipi ta 'metodi bi tliet tipi differenti ta' modifikaturi ta 'aċċess.
  • Il-metodu tal-isem huwa ssettjat bħala pubbliku. Billi, l-età u l-għoli huma stabbiliti għal protetti u privati ​​rispettivament.
  • Meta nippruvaw naċċessaw l-isem tal-metodu barra l-klassi u jassenjawlu xi valur, jaħdem tajjeb.
  • Iżda, meta nippruvaw nassenjaw valur lill-metodi ta 'età u għoli barra mill-klassi, tipproduċi żball fatali.

Minbarra dawn it-tliet modifikaturi tal-aċċess, għandna modifikaturi tal-aċċess Astratti u Finali f'PHP/. I-taqsima li jmiss, inti ser titgħallemhom b'eżempji.

Astratt modifikatur Aċċess fil PHP

Il-modifikatur tal-aċċess astratt jista' japplika biss għall-klassi u l-metodi. Ma nistgħux nużaw astratti bl-attributi tal-klassi.

Ladarba nużaw l-astratt mal-klassi, l-oġġett tagħha ma jistax jinbeda minħabba li m'għandu l-ebda kostruttur.

Ukoll, ftakar, jekk ma tużax modifikatur ta 'aċċess astratt mal-klassi u tiddikjara xi metodu astratt ġewwa fiha. Il-klassi ssir astratta kollha kemm hi.

Per eżempju

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

?>
  • Fl-eżempju ta 'hawn fuq, noħolqu Bike klassi astratta li fiha drive().
  • Noħolqu klassi oħra li tipprovdi implimentazzjoni tas-sewqan tal-metodu astratt.
  • Peress li ma nistgħux noħolqu oġġett tal-klassi astratta, nużaw il-klassi tal-Pulizija.

Modifikatur Aċċess Finali fil PHP

Eżatt bħall-modifikatur tal-aċċess astratt, ma nistgħux nużaw il-modifikatur tal-aċċess finali fil-PHP bl-attributi tal-klassi. Nistgħu nagħmlu l-klassi jew il-metodi tagħha finali.

Klassi b'kelma prinċipali finali ma tistax tintiret mill-klassijiet l-oħra. Ukoll, il-metodu bil-modifikatur tal-aċċess finali ma jistax jiġi sostitwit mis-subklassijiet derivati ​​minn din il-klassi.

Per eżempju - Klassi Finali fil-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();

?>
  • Fil-klassi ta 'hawn fuq, noħolqu metodu finali msg1() u metodu sempliċi msg2().
  • Ma nistgħux negħlbu l-metodu finali msg1(). Madankollu, il-metodi msg2() jistgħu jiġu sostitwiti mill-klassi li tirretha.
  • Ipprova jipprattika din il-problema billi toħloq klassi li testendi l-klassi Parent. Implimenta ż-żewġ metodi u ċċekkja liema metodu jipproduċi żball meta jinqabeż.

Eżempju ieħor - Metodu Finali fil-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.";
    }

}

?>
  • Fl-eżempju ta 'hawn fuq, noħolqu klassi mhux finali jew sempliċi li għandha żewġ metodi. msg1() huwa metodu finali u msg2() huwa sempliċi.
  • Aħna noħolqu Klassi Tfal li testendi l-Klassi Ġenitur u nippruvaw jegħlbu l-metodu finali msg1() tal-klassi ġenitur.
  • Se tipproduċi żball fatali u ma tkunx tista' tegħleb il-metodu finali tal-klassi ġenitur.

Żid kumment

Netwerk ta' Tuturi

Tgħallem PHP minn A sa Z