Pag-access sa mga Modifier sa PHP

A

Sama sa ubang mga lengguwahe, ang PHP nagpatuman usab sa pipila ka mga sakup alang sa mga pamaagi o mga kinaiya sa klase. Ang mga modifier sa pag-access nagtino kung diin ang mga variable o pamaagi sa klase mahimong ma-access. Niini nga artikulo, mahibal-an nimo ang bahin sa access modifiers sa PHP OOP ug ang ilang mga tipo.

Mga Uri sa Access Modifiers sa PHP

Adunay tulo ka access modifiers sa PHP.

Publiko - Kung maghimo ka usa ka pamaagi o hiyas sa klase sa PHP ug wala ipiho ang modifier sa pag-access, gitakda kini sa publiko pinaagi sa default. Niini nga mode, ang pamaagi o attribute kay ma-access bisan asa.

Pribado - Kung maghimo ka usa ka pamaagi o variable nga adunay usa ka pribado nga access modifier, kini ma-access lamang sa sulod sa klase diin kini gibuhat.

Gipanalipdan - Ang gipanalipdan nga pamaagi o hiyas ma-access sa sulod sa klase diin kini gibuhat. Usab, ang mga klase nga nakuha gikan sa kini nga klase mahimo nga usa ka gipanalipdan nga pamaagi ug hiyas.

Panig-ingnan

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

Pagpatin-aw sa pananglitan sa ibabaw

  • Sa panig-ingnan sa ibabaw, naghimo kami usa ka klase nga Tawo nga adunay tulo nga klase sa mga hiyas nga adunay tulo nga lainlaing mga lahi sa mga modifier sa pag-access.
  • Ang ngalan nga hiyas gibutang sa publiko. Samtang, ang edad ug gitas-on gitakda sa protektado ug pribado.
  • Kung gisulayan namon nga ma-access ang ngalan sa hiyas sa gawas sa klase ug hatagan ang pipila nga kantidad niini, kini molihok nga maayo.
  • Apan, kung atong sulayan ang paghatag og bili sa edad ug gitas-on nga mga hiyas sa gawas sa klase, makamugna kini og makamatay nga sayop.

Busa, gikan sa panig-ingnan sa ibabaw, ikaw adunay usa ka tin-aw nga pagsabot sa access modifiers sa PHP. Pagpraktisan nato ang mga pamaagi.

Pampubliko, Pribado ug Gipanalipdan nga mga pamaagi sa 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
?>

Pagpatin-aw sa pananglitan sa ibabaw

  • Sa panig-ingnan sa ibabaw, naghimo kami usa ka klase nga Tawo nga adunay tulo nga mga matang sa mga pamaagi nga adunay tulo nga lainlaing mga lahi sa mga modifier sa pag-access.
  • Ang paagi sa ngalan gitakda sa publiko. Samtang, ang edad ug gitas-on gitakda sa protektado ug pribado.
  • Kung gisulayan namon nga ma-access ang ngalan sa pamaagi sa gawas sa klase ug hatagan ang pipila nga kantidad niini, kini molihok nga maayo.
  • Apan, kung gisulayan namon nga hatagan ang kantidad sa mga pamaagi sa edad ug gitas-on sa gawas sa klase, nagpatungha kini nga makamatay nga sayup.

Gawas niining tulo ka access modifiers, aduna kitay Abstract ug Final access modifiers sa PHP/. Ako sa sunod nga seksyon, kamo makakat-on kanila uban sa mga panig-ingnan.

Abstract Access modifier sa PHP

Ang abstract access modifier mahimo ra magamit sa klase ug mga pamaagi. Dili kami makagamit sa mga abstract nga adunay mga hiyas sa klase.

Sa higayon nga gamiton nato ang abstract uban sa klase, ang butang niini dili masugdan tungod kay kini walay bisan unsa nga tigtukod.

Usab, hinumdumi, kung dili ka mogamit usa ka abstract access modifier sa klase ug ipahayag ang pipila ka abstract nga pamaagi sa sulod niini. Ang klase nahimong abstract sa kinatibuk-an.

Pananglitan

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

?>
  • Sa pananglitan sa ibabaw, naghimo kami usa ka abstract nga klase nga Bike nga adunay sulud nga abstract nga pamaagi sa pagmaneho ().
  • Naghimo kami og laing klase nga naghatag og pagpatuman sa abstract method drive.
  • Tungod kay dili kami makahimo og butang sa abstract nga klase, among gigamit ang klase sa Police.

Katapusan nga Access Modifier sa PHP

Sama sa abstract access modifier, dili namo magamit ang final access modifier sa PHP nga adunay mga attribute sa klase. Mahimo natong himoong kataposan ang klase o ang mga paagi niini.

Ang usa ka klase nga adunay katapusan nga keyword dili mapanunod sa ubang mga klase. Usab, ang pamaagi nga adunay katapusang access modifier dili ma-override sa mga subclass nga nakuha gikan niini nga klase.

Pananglitan - Katapusan nga Klase sa 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();

?>
  • Sa ibabaw nga klase, naghimo kami usa ka katapusang pamaagi nga msg1 () ug usa ka yano nga pamaagi nga msg2 ().
  • Dili nato ma-override ang katapusang pamaagi nga msg1(). Bisan pa, ang mga pamaagi nga msg2() mahimong ma-override sa klase nga makapanunod niini.
  • Sulayi pagpraktis kini nga problema pinaagi sa paghimo og klase nga nagpalapad sa klase sa Ginikanan. Ipatuman ang duha ka mga pamaagi ug susiha kung unsang paagiha ang makahimo og sayop sa pag-override.

Laing Panig-ingnan - Katapusan nga Pamaagi sa 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.";
    }

}

?>
  • Sa pananglitan sa ibabaw, naghimo kami usa ka dili katapusan o yano nga klase nga adunay duha nga mga pamaagi. Ang msg1() maoy kataposang paagi ug ang msg2() kay simple.
  • Naghimo kami usa ka Klase sa Bata nga nagpalapad sa Klase sa Ginikanan ug gisulayan nga i-override ang katapusang pamaagi nga msg1() sa klase sa ginikanan.
  • Maghimo kini og makamatay nga sayup ug dili nimo ma-override ang katapusang pamaagi sa klase sa ginikanan.

Idugang ang komentaryo

Network sa Tutor

Pagkat-on sa PHP gikan sa A hangtod Z