Die Beispiele in diesem Artikel fassen die relevanten Wissenspunkte der PHP-Klasse zusammen. Geben Sie es wie folgt als Referenz an alle weiter:
Endgültige Klasse und endgültige Methode
Wenn eine Methode in der übergeordneten Klasse als endgültig deklariert wird, kann die Unterklasse die Methode nicht überschreiben. Wenn eine Klasse als final deklariert ist, kann sie nicht vererbt werden.
final class a{} class a{ final public function A(){} }
Abstrakte Klassen und abstrakte Methoden
abstract class a { public abstract function func(); } class A extends a{ public function func(){} }
① Eine Klasse Sie können abstract verwenden, um eine abstrakte Klasse zu deklarieren. Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann und nur als übergeordnete Klasse für andere Klassen verwendet wird.
abstract class name{}
② Eine Methode kann mit abstrakten Methoden als abstrakte Methode deklariert werden; abstrakte Methoden müssen nur den Methodenheader deklarieren und benötigen keinen Methodenkörper in den geschweiften Klammern.
abstract public function name($val);
③ Wenn eine Klasse eine abstrakte Methode enthält, muss die Klasse als abstrakte Klasse deklariert werden.
④ Wenn eine Unterklasse von einer abstrakten Klasse erbt, kann die Unterklasse nicht alle abstrakten Methoden in der übergeordneten Klasse implementieren, es sei denn, die Unterklasse bleibt auch weiterhin eine abstrakte Klasse.
⑤ Wenn eine Unterklasse eine Methode einer abstrakten übergeordneten Klasse implementiert, kann der Zugriffskontrollbereich nicht reduziert werden und die Methodenparameter müssen ebenfalls konsistent (neu geschrieben) sein.
Schnittstelle
Schnittstelle kann als Abstraktion einer abstrakten Klasse auf höherer Ebene betrachtet werden, man kann sie als Sonderfall einer abstrakten Klasse bezeichnen
interface a{ function func(); } class A implements a { function func(){} }
Klasse: Attribute, Klassenkonstanten, Methoden
Abstrakte Klasse: Attribute, Klassenkonstanten, abstrakte Methoden
Schnittstelle: Schnittstellenkonstanten, abstrakte Methoden
① Im Vergleich zu abstrakten Klassen können Schnittstellen eine „Mehrfachvererbung“ implementieren
class A implements a,b,c{}
② Eine Schnittstelle kann nur eine Schnittstelle erben
interface a extends b{}
③ Die Methoden sind alle abstrakte Methoden ohne abstrakte Modifikation, d. h. die untergeordneten Klassen implementieren entweder die Schnittstellenmethoden (implementiert) oder werden auch als abstrakte Methoden deklariert
Überladungstechnologie
1. Attributüberladung: Wenn Sie ein nicht vorhandenes Attribut verwenden, wird eine vordefinierte Methode in der Klasse aufgerufen, um die Daten zu verarbeiten Wenn das Attribut nicht verwendet wird, führen Sie Folgendes aus: Verarbeitung
① Wert: Rufen Sie automatisch __get()
② in der Klasse auf. Zuweisung: Rufen Sie automatisch __set()③ in der Klasse auf. Bestimmen Sie, ob es existiert : __isset automatisch in der Klasse aufrufen ()
④ Zerstörung: __unset() automatisch in der Klasse aufrufen
Voraussetzung ist, dass diese Methoden vordefiniert sind, andernfalls wird ein Fehler gemeldet
<?php class bee{ public $ol = array(); public function __get($key){ if(isset($this->ol[$key])){ return $this->ol[$key]; } return $key.' not exists'; } public function __set($key,$val){ $this->ol[$key] = $val; } public function __isset($key){ if(isset($this->ol[$key])){ return true; } return false; } public function __unset($key){ unset($this->ol[$key]); } } $obj = new bee(); echo $obj->one; echo '<br>'; $obj->one = 1; echo $obj->one; echo '<br>'; var_dump(isset($obj->one));
Die Laufergebnisse sind wie folgt:
one not exists 1 boolean true
2. Methodenüberladung: Wenn eine nicht vorhandene Methode verwendet wird, wird die voreingestellte Methode in der Klasse aufgerufen. Eine definierte Methode wird verwendet, um dieses Verhalten zu behandeln.
Führen Sie für Anwendungsszenarien, in denen die Methode nicht verwendet wird, die folgende Verarbeitung aus
① Rufen Sie unzugängliche Methoden im Objekt auf: __call()
② Rufen Sie unzugängliche Methoden im statischen Modus auf: __callStatic()<?php class bee{ public function __call($name,$arr){ echo '<br>'; echo 'function '.$name.' not exist'; } static function __callStatic($name,$arr){ echo '<br>'; echo 'function '.$name.' not exist'; } /*public function __call($name,$arr){ $num = count($arr); if($num<1){ $name(); }else{ $name = $name.'_one'; $name($arr[0]); } }*/ } $obj->func(); bee::staFunc(); /*$obj->func(1); function func(){ echo '<br>'; echo 'no.0'; } function func_one($val){ echo '<br>'; echo 'no.'.$val; }*/
Die laufenden Ergebnisse sind wie folgt:
function func not exist function staFunc not exist
Hinweis: Die oben genannten Methoden sind alle magische Methoden, alle mit Parametern
Das hoffe ich Der Artikel wird für jeden hilfreich sein, der sich mit PHP-Programmierung beschäftigt.