Heim  >  Artikel  >  php教程  >  PHP-Objektorientierung Teil 2 – Kapselung

PHP-Objektorientierung Teil 2 – Kapselung

WBOY
WBOYOriginal
2016-12-05 13:26:271216Durchsuche

1. Verpackung:

Wenn ich über das konkrete Konzept spreche, habe ich das Gefühl, dass ich nicht weiß, wovon ich spreche. Tatsächlich ist es nur

Fügen Sie vor den Mitgliedseigenschaften und Mitgliedsmethoden der Klasse einen Modifikator ähnlich wie „public protected private“ hinzu

Zweck:Die internen Details des Objekts so weit wie möglich verbergen, um eine Zugangskontrolle zu erreichen [Es geht nicht darum, den Zugang zu verweigern]. , wobei nur begrenzte externe Schnittstellen und externe Ereignisse (Kontakt) beibehalten werden.)

2. Prinzipien der Kapselung:

Der externe Teil des Objekts kann nicht nach Belieben auf die internen Daten (Mitgliedseigenschaften und Mitgliedsmethoden) des Objekts zugreifen, wodurch die „Kreuzinfektion“ externer Fehler effektiv vermieden und Softwarefehler ermöglicht werden Lokalisierung sein, wodurch die Schwierigkeit der Fehlerprüfung und des Debuggens erheblich verringert wird.

3. Modifikator öffentlich geschützt privat

öffentlich: öffentlich, standardmäßig geschützt: geschützt privat: privat

4. Zugriffsbereich


Ob auf die entsprechenden Eigenschaften und Methoden zugegriffen werden kann

         public       protected       private
类的外部           √            ×            ×
类的内部           √           √           √

①Nur öffentliche Eigenschaften und Methoden können außerhalb der Klasse aufgerufen werden.

②Auf andere Eigenschaften und Methoden kann indirekt zugegriffen werden, indem öffentliche Methoden innerhalb der Klasse deklariert werden.

③Sie können innerhalb der Klasse auf öffentliche, private und geschützte Eigenschaften und Methoden zugreifen.

④Auf private und geschützte Eigenschaften und Methoden kann innerhalb einer Klasse nicht zugegriffen werden.

Wenn die Mitgliedsmethode keine Zugriffskontrollzeichen hat, ist sie standardmäßig öffentlich und kann von überall aus aufgerufen werden (Öffentliche Methoden können als Zugriffsschnittstellen außerhalb des Objekts verwendet werden, um indirekt auf das Interne zuzugreifen Details zum Objekt) .

5. Über mehrere gängige magische Methoden in der Kapselung __set(), __get(), __isset(), __unset()

Um diese magischen Methoden vorzustellen, zunächst einmal: Die Konstruktionsmethode __construct() wird nicht durch Schlüsselwörter geändert und ist eine öffentliche Methode (Legen Sie keine privaten Berechtigungen für die Konstruktionsmethode fest)Benutzer können den Konstruktor verwenden, um privaten Eigenschaften Anfangswerte zuzuweisen, nachdem sie das Objekt instanziiert haben.

Wir haben das Objekt jedoch instanziiert und möchten privaten Eigenschaften Werte zuweisen, während das Programm läuft. Es gibt zwei Methoden

(1). Legen Sie öffentliche Methoden innerhalb der Klasse fest, um Zuweisungs- und Werteschnittstellen bereitzustellen

class Person{
    private $name="紫藤";
    
    public function __construct(){
        echo $this->name;
    }    
    
    //赋值方法
     public function setvalue($name){
           $this->name=$name;          
     }
      public function getvalue(){
           echo $this->name;       
     }
}

//实例化
$mod = new Person();

Das Ergebnis ist: Glyzinien

$mod->setvalue('宝强');
$mod->getvalue();

Das Ergebnis ist: Baoqiang

(2)Magische Methoden __set(),__get(),__isset(),__unset()

Wenn Sie wie oben beschrieben jedes Mal die öffentliche Methode festlegen müssen, ist dies sehr umständlich. In Versionen nach PHP5.1.0 sind __set() und __get() vordefiniert, um die Paarung abzuschließen -Öffentliche Attribute können abgerufen und kopiert werden.

__set($propertyName,$propertyValue)

hat zwei Parameter, Attributname und Attributwert Wenn Sie einem nicht öffentlichen Attribut einen Wert zuweisen, wird diese Methode automatisch aufgerufen ( heißt, dass __set()) in der Klasse deklariert werden muss (später im Code hinzugefügt)

__get($propertyName) ruft diese Methode automatisch auf, wenn der Wert einer nicht öffentlichen Eigenschaft abgerufen wird.

Erkennen Sie, ob nicht öffentliche Attribute vorhanden sind __isset() und löschen Sie die nicht öffentlichen Attribute eines Objekts __unset().Um zu verhindern, dass Benutzer diese beiden Methoden aktiv aufrufen, verwenden Sie die privates Schlüsselwort In einem Objekt gekapselt.

__isset($propertyName) erkennt, ob nicht öffentliche Attribute vorhanden sind (dies ist eine Hilfserkennungsfunktion und hat keine Erkennungsfunktion). Diese wird automatisch aufgerufen, wenn die Funktion isset() extern aufgerufen wird. Methode.

__unset($propertyName) löscht die nicht öffentlichen Eigenschaften eines Objekts_ Diese Methode wird nur automatisch aufgerufen, wenn die Funktion unset() extern aufgerufen wird

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn